No description
Find a file
Trentin Davide 0e3360e4a0 perf(chart-realtime): cut per-frame render CPU on realtime chart
Profiling (Pixel 7 + SM-T819) showed the chart CPU-bound in Skia
analytic-AA path fill plus a full-buffer copy on every frame.

- LineSignalRenderer: draw the signal polyline with anti-aliasing off,
  via a cached common Paint + drawIntoCanvas (KMP-safe, no nativeCanvas).
  Flips Skia from CPU coverage-mask raster to GPU tessellation;
  configured strokeWidth still honored. Removes the old Stroke cache.
- TieredBuffer/CircularBuffer: replace the full ~60k-sample copy+scan in
  the draw hot path with an O(log n) bisect window read (copyWindow).
  Output byte-identical (equivalence tests incl. ring-wrap + edges).
- RealtimeChart: split the single Canvas into a cold layer (Y-axis line,
  grid, labels) and a hot layer (signal, X-axis, crosshair) so per-frame
  TextMeasurer layout stops running every frame. Y range stabilized to
  the tick grid and shared by both layers (signal never clips).
- minSdk 26 -> 24.

Renderer unit test moved commonTest -> iosTest (Compose Paint delegates
to a non-mockable android.graphics.Paint stub on the JVM host; Skiko
backs it for real). Verified on SM-T819 (release): frame time 150ms ->
48ms, ~10 -> ~31 fps at full 8x200 Hz load.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 11:39:00 +02:00
.github chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
.paul chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
app feat(app): portfolio showcase app — 7 scenes demoing all capabilities 2026-05-22 11:02:19 +02:00
chart-realtime perf(chart-realtime): cut per-frame render CPU on realtime chart 2026-07-23 11:39:00 +02:00
docs chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
gradle feat(chart): v0.5.0 architecture + interaction 2026-05-22 00:05:43 +02:00
samples/ios/ChartRealtimeDemo chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
.gitignore Initial commit: chart-realtime KMP library v0.4.1-SNAPSHOT 2026-05-21 01:48:51 +02:00
build.gradle.kts feat(chart): v0.4.0 portfolio hardening 2026-05-21 16:27:15 +02:00
CHANGELOG.md chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
CONTRIBUTING.md chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
gradle.properties chore(portfolio): v1.0.0 prep — docs, CI, demos 2026-05-22 10:54:26 +02:00
gradlew Initial commit: chart-realtime KMP library v0.4.1-SNAPSHOT 2026-05-21 01:48:51 +02:00
LICENSE feat(chart): v0.4.0 portfolio hardening 2026-05-21 16:27:15 +02:00
settings.gradle.kts Initial commit: chart-realtime KMP library v0.4.1-SNAPSHOT 2026-05-21 01:48:51 +02:00