From 9f68f5950466a3ccc5059b711ec842fd6fa73237 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Fri, 20 Dec 2024 22:06:41 -0500 Subject: [PATCH] musikr.pipeline: disable extraction shuffling No longer needed now that jpeg writes are extremely quick. Will re-introduce in the case that I introduce webp parsing again. --- .../java/org/oxycblt/musikr/pipeline/ExtractStep.kt | 1 - .../java/org/oxycblt/musikr/pipeline/FlowUtil.kt | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt b/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt index 72be20214..60395be44 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt @@ -90,7 +90,6 @@ private class ExtractStepImpl( val fds = uncachedSongs - .shuffle() .mapNotNull { wrap(it) { file -> withContext(Dispatchers.IO) { diff --git a/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt b/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt index 2ae472a29..f8716ba04 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/pipeline/FlowUtil.kt @@ -82,15 +82,3 @@ internal fun Flow.distribute(n: Int): DistributedFlow { val hotFlows = posChannels.map { it.receiveAsFlow() }.toTypedArray() return DistributedFlow(managerFlow, hotFlows) } - -internal fun Flow.shuffle() = flow { - // As far as I'm aware, the only way to get a truly normal distribution - // on a flow is by evaluating it. I tried a bunch of different strategies - // on lazily shuffling a flow and it simply doesn't produce a good enough - // distribution since you need to emit late stuff early and early stuff - // late. It's best to just eval and re-emit. - val output = mutableListOf() - toList(output) - output.shuffle() - emitAll(output.asFlow()) -}