- images are not cached in the memory in such a case in all the impls.
- it reflects closer real world where a bunch of images usually loaded
from internet asynchronously
## Fixes
It is a workaround for
[CMP-8038](https://youtrack.jetbrains.com/issue/CMP-8038)
## Release Notes
N/A
- Updated the README.md with the description of benchmarks (might be
useful to external parties)
- customized a runner for D8
- added a `warmupCount` parameter to `runBenchmarks`, because it's
required for Jetstream3 (a set of benchmarks) that there is no warmup
(they skip it)
- Added a smooth scroll variant of LazyGrid + variants with
LaunchedEffect in grid cells for coroutines usage.
- Added a new class `Config`. Object `Args` is simplified, it's purpose
is to simply parse the arguments and produce a instance of `Config`. The
usages of `Args` were replaced by `Config`, except the parsing in fun
main.
- Renamed Example1 to MultipleComponents
- Also added MultipleComponents-NoVectorGraphics for D8 - it's similar
to MultipleComponents but doesn't use vector icons.
Fixes https://youtrack.jetbrains.com/issue/CMP-6942
Note: it's based on this PR
https://github.com/JetBrains/compose-multiplatform/pull/5275
## Testing
Manually run the benchmarks
## Release Notes
N/A
Adds serialization to JSON format to collect and analyze the results of
benchmark runs.
Additionally, improve the Gradle build by using version catalogues and
modern APIs.
## Testing
A regular benchmarks execution was set on the CI.
## Release Notes
### Features - Multiple Platforms
- Improve benchmarks build and serialize results into JSON for the
collection and analysis
Benchmarks crash due to the attempt to use a cached scene that was
closed in the previous benchmark.
Create a Surface for each of the benchmarks instead.
## Testing
Testing was done manually.
## Release Notes
N/A
- Replace total CPU time by CPU/GPU/TOTAL average frame time
- Because `Mode.CPU` now measures GPU, rename it to `SIMPLE`
- Because the difference between `FRAMES` and `SIMPLE` is only in vsync,
rename it to `VSYNC_EMULATION`
- Remove `Mode.FRAMES_GPU`, as it affects only output
- Add Compose/Kotlin version, frame/warmup count
- Add writing to CSV on Desktop

Example of output into console:
```
Running emulating 120 FPS
# AnimatedVisibility
Version: 1.7.1 (Kotlin 2.1.0)
1000 frames (warmup 100)
CPU average frame time: 268.626us
GPU average frame time: 1.383332ms
TOTAL average frame time: 1.651958ms
Worst p1 CPU (ms): 2.017518ms
Worst p2 CPU (ms): 1.566880ms
Worst p5 CPU (ms): 1.188572ms
Worst p10 CPU (ms): 982.504us
Worst p25 CPU (ms): 753.478us
Worst p50 CPU (ms): 592.363us
Worst p1 GPU (ms): 5.945218ms
Worst p10 GPU (ms): 2.379730ms
Worst p50 GPU (ms): 1.909719ms
Missed frames (no buffering):
- count: 3
- ratio: 0.003
Missed frames (double buffering):
- count: 3
- ratio: 0.003
Results saved to D:\Work\compose-multiplatform\benchmarks\multiplatform\benchmarks\build\benchmarks\AnimatedVisibility.csv
# LazyGrid
...
```
## Release Notes
N/A
- kn+performance and jvm-vs-kotlin-native benchmarks are merged into one
multiplatform where they measure both CPU time and missed frames +
frames percentiles
- added multiplatform run arguments processing for benchmarks
configuration
- deleted standalone samples (moved LazyList to the infrastructure)
Fixes
[CMP-5790](https://youtrack.jetbrains.com/issue/CMP-5790/Refactor-CMP-benchmarks-to-remove-code-duplication)
Should fix
```
Dependency 'androidx.compose.foundation:foundation-android:1.8.0-alpha02' requires libraries and applications that depend on it to compile against version 35 or later of the Android APIs.
```
* Add a benchmark extracted from #2283 issue
* A benchmark with infinite animation based on official template project
* A benchmark app extracted from compose/integration/macrobenchmark
* A benchmark app extracted from the NY sample of examples/visual-effects
Remove:
```
__LATEST_COMPOSE_RELEASE_VERSION__
__KOTLIN_COMPOSE_VERSION__
System.getenv("COMPOSE_TEMPLATE_COMPOSE_VERSION")
```
They pollute templates/examples.
Now, all paths where we need to change the version are hardcoded in the script.
Usage:
```
./replace.sh 1.0.0-rc6
```
This script is planned to run on CI
In the future I will add support for changing Kotlin version
The build `0.4.0-build182` upgrades
`kotlinx-collections-immutable` library
(which is used by the compose runtime) to 0.3.4,
which was published to maven central,
so most usages of sunsetting jcenter repo
can be removed now.
Resolves#557
The verb `update` in `__UPDATE_COMPOSE_VERSION_MARKER__`
could be read as an instruction to update the plugin,
which might be confusing for users.
I suggest renaming the marker to more neutral
`__LATEST_COMPOSE_RELEASE_VERSION__`