From 4b9a55e178a730196d4a614c2eef84f3dd06eec0 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 21 Feb 2024 13:51:27 -0500 Subject: [PATCH] Increasing the speed of the Robohash SVG to buffer function --- .../amethyst/ui/components/Robohash.kt | 13 ++-- .../benchmark/RobohashBenchmark.kt | 31 ++++++++-- commons/build.gradle | 2 + .../amethyst/commons}/Robohash.kt | 61 +++++++++---------- 4 files changed, 64 insertions(+), 43 deletions(-) rename benchmark/src/androidTest/java/com/vitorpamplona/{quartz => amethyst}/benchmark/RobohashBenchmark.kt (95%) rename {quartz/src/main/java/com/vitorpamplona/quartz/utils => commons/src/main/java/com/vitorpamplona/amethyst/commons}/Robohash.kt (98%) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt index ca8680946..7262646a3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/Robohash.kt @@ -30,9 +30,10 @@ import coil.fetch.Fetcher import coil.fetch.SourceResult import coil.request.ImageRequest import coil.request.Options +import com.vitorpamplona.amethyst.commons.Robohash import com.vitorpamplona.amethyst.service.checkNotInMainThread -import com.vitorpamplona.quartz.utils.Robohash -import okio.Buffer +import okio.buffer +import okio.source import java.nio.charset.Charset @Stable @@ -43,14 +44,10 @@ class HashImageFetcher( ) : Fetcher { override suspend fun fetch(): SourceResult { checkNotInMainThread() + val source = try { - val buffer = Buffer() - buffer.writeString( - Robohash.assemble(data.toString(), isLightTheme), - Charset.defaultCharset(), - ) - buffer + Robohash.assemble(data.toString(), isLightTheme).byteInputStream(Charset.defaultCharset()).source().buffer() } finally { } diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/RobohashBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RobohashBenchmark.kt similarity index 95% rename from benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/RobohashBenchmark.kt rename to benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RobohashBenchmark.kt index 2f0b781d0..fe35c01d1 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/quartz/benchmark/RobohashBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RobohashBenchmark.kt @@ -18,16 +18,20 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.vitorpamplona.quartz.benchmark +package com.vitorpamplona.amethyst.benchmark import androidx.benchmark.junit4.BenchmarkRule import androidx.benchmark.junit4.measureRepeated import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.vitorpamplona.quartz.utils.Robohash +import com.vitorpamplona.amethyst.commons.Robohash import junit.framework.TestCase.assertEquals +import okio.Buffer +import okio.buffer +import okio.source import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import java.nio.charset.Charset /** * Benchmark, which will execute on an Android device. @@ -41,7 +45,7 @@ class RobohashBenchmark { val warmHex = "f4f016c739b8ec0d6313540a8b12cf48a72b485d38338627ec9d427583551f9a" val testHex = "48a72b485d38338627ec9d427583551f9af4f016c739b8ec0d6313540a8b12cf" - val resultingSVG = + val expectedTestSVG = "" + "" + "