Skip to content

Conversation

@b-gyula
Copy link

@b-gyula b-gyula commented May 19, 2024

  • New output format for better js support:
    • result: {benchmark type} -> {case} -> {array of average times} (all the times are saved in the )
    • sizes: the collection sizes used the result's array contains the times in the same order
    • prams: the execution parameters: loop count, time, scala, jvm version and the timestamp of the end of execution
  • benchmark 'construct' renamed to 'build', 'foreach' to 'loop' and 'lookup' to 'index'
  • added 'contains'
  • New benchmarks cases:
    • build / Array(size)+toSet
    • build / List:+
    • build / List+:
    • build / m.VectorBuilder
    • build / m.ListBuffer
    • build / m.ArrayBuilder
    • build / m.ArrayBuffer
    • build / m.ArraySeq:+
    • remove / List.init
    • remove / m.ListBuffer
    • concat / Map-same
    • concat / Set-same
    • concat / m.ArraySeq
    • loop / Vector-for
    • loop / Vector-while
    • loop / [m.]Set-for
    • loop / [m.]Map-for
    • loop / Array-for
    • loop / m.ArraySeq-while
    • loop / m.ListBuffer-while
    • loop / m.ListBuffer-foreach
    • loop / m.ListBuffer-for
    • loop / m.(Array)Buffer-for
    • loop / m.(Array)Buffer-while
  • Compiles with 2.12, 2.13 and 3.3 with one exception: case build / m.ArraySeq.update (no cross compilation yet, the scala version needs to be changed manually in the build script)
  • use the same objects for all performance test cases to reduce memory consumption
  • 'loop' cases use unified functions for clearity
  • added check for duplicate case names
  • added macros.gs containing AppScript to import and format results in a Google sheet
  • added bench.Memory mill command to run the memory benchmark

gyula and others added 11 commits August 1, 2021 00:46
- sbt upto 1.4.8 (for java 11)
- repetition can be passed as main program argument to PerfMain
- array, buffer indexing extracted from "lookup" benchmark into: "index"
- added some new sizes to test
- column width changed for small sizes
- do not initialize test case @ each execution
- do not run initialization for 2sec before test case execution
- the result file name can be defined as 2nd command line parameter
- Enum used for Benchmark names
- removed gradle common 'scala-common-conventions'
- Added 'ArrayBuilder', 'ArraySeq', 'VectorBuilder'
- `Analyze` can take the result file name as command line parameter
- benchmark case 'Set' 'concat' uses unique values
- removed ammonite dependency
- ArraySeq used: less collection duplication + quicker index lookups in 'contains' cases
… to skip

- Added 'm.ArraySeq.for' 'contains' case looping the keys in a `for` instead of `while` loop
- benchmark loops moved into Performance
- mill build
* New output format for better js support:
  - result: {benchmark type} -> {case} -> {array of average times} (all the times are saved in the )
  - sizes: the collection sizes used the result's array contains the times in the same order
  - prams: the execution parameters: loop count, time, scala, jvm version and the timestamp of the end of execution
* New benchmarks cases:
  - remove / List.init
  - remove / m.ListBuffer
  - concat / Map-same
  - concat / Set-same
  - loop / Vector-for
  - loop / Vector-while
  - loop / [m.]Set-for
  - loop / [m.]Map-for
  - loop / Array-for
  - loop / m.ArraySeq-while
  - loop / m.ListBuffer-while
  - loop / m.ListBuffer-foreach
  - loop / m.ListBuffer-for
  - loop / m.(Array)Buffer-for
  - loop / m.(Array)Buffer-while
* Compiles with 2.12, 2.13 and 3.3 with one exception:  case `build / m.ArraySeq.update` (no cross compilation yet, the scala version needs to be changed manually in the build script)
* use the same objects for all performance test cases to reduce memory consumption
* benchmark 'foreach' -> 'loop'
* 'loop' cases use unified functions for clearity
+ added check for duplicate case names
+ added `macros.gs` containing AppScript to import and format results in a Google sheet
+ added `bench.Memory` mill command to run the memory benchmark
- `gradle` build removed
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