Skip to content

add v2 benchmark#175

Merged
jsoizo merged 5 commits into
version_2_0_0from
version_2_0_0_benchmark
May 21, 2026
Merged

add v2 benchmark#175
jsoizo merged 5 commits into
version_2_0_0from
version_2_0_0_benchmark

Conversation

@jsoizo
Copy link
Copy Markdown
Owner

@jsoizo jsoizo commented May 21, 2026

No description provided.

jsoizo added 4 commits May 17, 2026 02:45
Scaffolds four JVM-only subprojects under benchmark/ to visualize the
performance characteristics of v1.10.0 (Maven artifact, com.github.doyaaaaaken.*)
against v2.0.0 (this branch, com.jsoizo.*) on identical workloads.

Subprojects:
- benchmark/shared: deterministic data generation (CsvDataGen / DatasetSpec /
  DataStats) and environment probe. Depends only on kotlin-stdlib so it stays
  out of every benchmark classpath as a library.
- benchmark/v1: JMH source set whose only kotlin-csv on classpath is
  com.jsoizo:kotlin-csv-jvm:1.10.0. Covers readAll(String/InputStream/File),
  iterative Sequence over File, readAllWithHeader, writeAll(OutputStream/File).
- benchmark/v2: JMH source set whose only kotlin-csv on classpath is the
  current project. Mirrors the v1 workloads on the v2 API and adds
  V2BackendBenchmarks comparing java.io vs kotlinx-io paths.
- benchmark/parity: JUnit subproject that intentionally puts both v1 and v2
  on the test classpath (FQCNs do not collide) and asserts row-by-row
  equality on the HARD dataset for readAll/readAllWithHeader/writeAll.

Classpath isolation is achieved by separating v1 and v2 into different
Gradle resolution scopes; this stops Gradle from collapsing kotlinx-coroutines
(and other transitive deps) to a single version across the two artifacts.
Resolved jmhRuntimeClasspath was verified to contain v1 only on the v1 side
and the v2 project only on the v2 side.

JMH defaults: warmup=5, iterations=5, fork=2, modes=throughput+avgt,
jvmArgs=[-Xms2g,-Xmx2g], JDK 21 toolchain. -Pbench.profile=large|gcprof|
stackprof overrides the defaults for the long-running LARGE dataset and
profiler runs. -Pjmh.include / -Pjmh.warmupIterations / -Pjmh.iterations /
-Pjmh.fork allow per-invocation overrides for smoke runs.
Sets warmup=3, iter=3, fork=1, time=5s and restricts dataset @Param to
SMALL and HARD via JMH '-p dataset' equivalent. Intended for the first
issue #172 comment so readers see numbers before the full primary run
finishes.
The MapProperty<String, ListProperty<String>> setter does not accept a
plain List<String>. Wrap the value in objects.listProperty(...).set(...).
Restricts dataset @Param to SMALL/MEDIUM/HARD; the LARGE dataset is
covered by the separate 'large' profile per the methodology in #172.
@jsoizo jsoizo changed the title Version 2 0 0 benchmark add v2 benchmark May 21, 2026
@jsoizo jsoizo merged commit 5a48524 into version_2_0_0 May 21, 2026
3 checks passed
@jsoizo jsoizo deleted the version_2_0_0_benchmark branch May 21, 2026 14:21
@codecov
Copy link
Copy Markdown

codecov Bot commented May 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.77%. Comparing base (3ab4b2a) to head (6f3a2cf).
⚠️ Report is 7 commits behind head on version_2_0_0.

Additional details and impacted files
@@              Coverage Diff               @@
##           version_2_0_0     #175   +/-   ##
==============================================
  Coverage          94.77%   94.77%           
==============================================
  Files                 22       22           
  Lines                421      421           
  Branches              95       95           
==============================================
  Hits                 399      399           
  Misses                14       14           
  Partials               8        8           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant