Released ScalaMeter 0.7 for Scala 2.10 and 2.11

  26.08.2015., poster: Alex

ScalaMeter 0.7 for Scala 2.10 and Scala 2.11 has just been released!

This ScalaMeter release is due to a hugely successful Google Summer of Code 2015 project – the star of the release is Krzysztof Janosz, whose valiant efforts brought ScalaMeter to a new level.

Also, thanks to all the committers and people who contributed in any way, including submitting valuable feedback. We were able to follow up on some of the suggestions in the 0.7 release, and we plan to continue to do so in the future. Still, we invite you to help by contributing patches, bugfixes, new features, and extensions!

New Features

Changes

  • Make GZIPJSONSerializationPersistor default for regression testing.
  • Rename PerformanceTest to Bench.
  • The Bench class (formerly PerformanceTest) now takes a type parameter that describes the type of the results it produces. For most benchmark types, this is just Double, but some benchmark types measure running time profiles or method invocation counts and have different results. The Reporter and Measurer must have the same type as the benchmark itself.
  • Change default directory for the benchmark results to target/benchmarks.

Deprecated

  • Move and mark as deprecated JavaPerformanceTest and its components to org.scalameter.deprecatedjapi.
  • Add compatibility type alias PerformanceTest for org.scalameter.Bench in api package.
  • Deprecate include[BenchClass] statement in favor of include(new BenchTrait {}) (the BenchTrait is a normal benchmark, but must be implemented in a Scala trait).

Fixed

  • Fix lack of default reportDir when running benchmarks using main method.
  • Improve release process.

You can add ScalaMeter as an SBT dependency at Sonatype OSS for Scala 2.10 projects:

<dependency>
  <groupId>com.storm-enroute</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.7</version>
</dependency>

Or, for Scala 2.11 projects:

<dependency>
  <groupId>com.storm-enroute</groupId>
  <artifactId>scalameter_2.11</artifactId>
  <version>0.7</version>
</dependency>

Or, in SBT, just:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/releases"

libraryDependencies += "com.storm-enroute" %% "scalameter" % "0.7"

To only use the inline benchmarking features, use the scalameter-core module:

libraryDependencies += "com.storm-enroute" %% "scalameter-core" % "0.7"


Released ScalaMeter 0.6 for Scala 2.10 and 2.11

  16.07.2014., poster: Alex

ScalaMeter 0.6 for Scala 2.10 and Scala 2.11 has just been released!

New features and fixes:

  • the core module introduces inline benchmarking to test performance or memory footprint in a running app – more information

      import org.scalameter._
      val time = measure {
        for (i <- 0 until 100000) yield i
      }
      println(s"Total time: $time")
    
  • you can now use the Context constructor to factor out any configurations that you use repeatedly:

      val opts = Context(
        exec.benchRuns -> 40
      )
    
      measure method "map" config(opts) in {
        // ...
      }
    

You can reuse the same opts in different configuration groups or using blocks.

  • typed keys for the config block - now you can’t specify an incorrect configuration value for a specific key – thanks, Alexey Romanov!
  • verbose mode is now on by default
  • new predefined test configurations
  • the Scala binding for the JFreeChart is now used – thanks, Christian Krause!
  • a lot of bug fixes and better error messages

Thanks to all the committers and people who contributed in any way.

Note: the organization name has changed, see below.

You can add it as an SBT dependency at Sonatype OSS for Scala 2.10 projects:

<dependency>
  <groupId>com.storm-enroute</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.6</version>
</dependency>

Or, for Scala 2.11 projects:

<dependency>
  <groupId>com.storm-enroute</groupId>
  <artifactId>scalameter_2.11</artifactId>
  <version>0.6</version>
</dependency>

Or, in SBT, just:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/releases"

libraryDependencies += "com.storm-enroute" %% "scalameter" % "0.6"

To only use the inline benchmarking features, use the scalameter-core module:

libraryDependencies += "com.storm-enroute" %% "scalameter-core" % "0.6"


Released ScalaMeter 0.5-M2 for Scala 2.10 and 2.11

  23.04.2014., poster: Alex

ScalaMeter 0.5-M2 for Scala 2.10 and Scala 2.11 has just been released!

New features and fixes:

  • you can now use the Context constructor to factor out any configurations that you use repeatedly:

      val opts = Context(
        exec.benchRuns -> 40
      )
    
      measure method "map" config(opts) in {
        // ...
      }
    

You can reuse the same opts in different configuration groups or using blocks.

  • typed keys for the config block - now you can’t specify an incorrect configuration value for a specific key – thanks, Alexey Romanov!
  • verbose mode is now on by default
  • new predefined test configurations
  • the Scala binding for the JFreeChart is now used – thanks, Christian Krause!
  • a lot of bug fixes and better error messages

Thanks to all the committers and people who contributed in any way.

You can add it as an SBT dependency at Sonatype OSS for Scala 2.10 projects:

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.5-M2</version>
</dependency>

Or, for Scala 2.11 projects:

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.11</artifactId>
  <version>0.5-M2</version>
</dependency>

Or, in SBT, just:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.5-M2"


Released ScalaMeter 0.4 for Scala 2.10

  05.11.2013., poster: Vlad

ScalaMeter 0.4 for Scala 2.10 is now available on maven central!

The centerpiece of this release is HTML reporter based on the D3 visualization library. You can see a live example of the report page here. This new HTML reporter is the default reporter used in PerformanceTest.Regression tests.

Some of its features are:

  • x-axis choice for composed generators – allows choosing whether problem size, parallelism level or the measurement date are on the x-axis
  • chart and histogram view of the measurements
  • confidence interval display
  • filtering input parameters interactively
  • choosing tests from different test groups interactively
  • permalinks that allow sharing the chosen configuration of displayed test groups and input parameters

Other new features include:

  • MemoryFootprint measurer allows measuring the memory footprint of a data structure
  • -CscopeFilter option allows selectively running only specific tests from your suite
  • time units now added to regression and logging reporters
  • the include statement for composing several test classes is now more powerful –- the enclosing class overrides the persistor and reporter values of the nested test classes, but those tests still use their own executors

To get scalameter with Maven:

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.4</version>
</dependency>

Or, in SBT:

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.4"
testFrameworks += new TestFramework("org.scalameter.ScalaMeterFramework")

A big thank you to everyone who contributed ideas and/or code to the scalameter repo!



ScalaMeter Snapshots on Sonatype OSS

  02.10.2013., poster: Vlad

ScalaMeter snapshots are now deployed to Sonatype nightly!

You can add it as an SBT dependency at Sonatype OSS.

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.4-SNAPSHOT</version>
</dependency>

Or, in SBT:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.4-SNAPSHOT"


Released ScalaMeter 0.4-M2 for Scala 2.10

  14.06.2013., poster: Alex

ScalaMeter 0.4-M2 for Scala 2.10.0 has just been released!

This milestone release features the final implementation of the HTML reporters based on the D3 visualization library. You can see a live example of the report page here. This new HTML reporter is the default reporter used in PerformanceTest.Regression tests.

Some of its features are: - x-axis choice for composed generators – allows choosing whether problem size, parallelism level or the measurement date are on the x-axis - chart and histogram view of the measurements - confidence interval display - filtering input parameters interactively - choosing tests from different test groups interactively - permalinks that allow sharing the chosen configuration of displayed test groups and input parameters - list goes on …

The new HTML reporter is entirely a contribution by Roman Zoller. Excellent work, Roman!

If you are using Maven, you can add ScalaMeter 0.4-M2 as a dependency at Sonatype OSS.

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.4-M2</version>
</dependency>

Or, in SBT:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.4-M2"


Released ScalaMeter 0.4-M1 for Scala 2.10

  02.05.2013., poster: Alex

ScalaMeter 0.4-M1 for Scala 2.10.0 has just been released!

New features and fixes: - the new interactive HTML reporter allows filtering, visualizing and comparing your performance data from your browser much more efficiently than before – it is now the default reporter for PerformanceTest.Regression tests (description and usage coming soon) - MemoryFootprint measurer allows measuring the memory footprint of a data structure - -CscopeFilter option allows selectively running only specific tests from your suite - the include statement for composing several test classes is now more powerful – the enclosing class overrides the persistor and reporter values of the nested test classes, but those tests still use their own executors - time units now added to regression and logging reporters - other fixes

You can add it as an SBT dependency at Sonatype OSS.

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.4-M1</version>
</dependency>

Or, in SBT:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.4-M1"


Released ScalaMeter 0.3 for Scala 2.10.0

  14.02.2013., poster: Alex

ScalaMeter 0.3 for Scala 2.10.0 has just been released!

New features and fixes: - paths allowed in the resultDir property - works on JDK 1.6 with the preJDK7 flag, although with increased warmup times - easier to create benchmarks with the default reinstantiation frequency - new chart types - and many fixes

You can add it as an SBT dependency at Sonatype OSS.

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.3</version>
</dependency>

Or, in SBT:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.3"


Skills Matter Podcast

  05.12.2012., poster: Alex

ScalaMeter was presented on Scala eXchange 2012 – to learn more about why do we do performance testing, why is it hard and how ScalaMeter can help, you can see the podcast on the Skills Matter website.



Released ScalaMeter 0.2 for Scala 2.10.0-RC2

  28.11.2012., poster: Alex

ScalaMeter 0.2 for Scala 2.10.0-RC2 has just been released!

You can add it as an SBT dependency at Sonatype OSS.

<dependency>
  <groupId>com.github.axel22</groupId>
  <artifactId>scalameter_2.10</artifactId>
  <version>0.2</version>
</dependency>

Or, in SBT:

resolvers += "Sonatype OSS Snapshots" at
  "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "com.github.axel22" %% "scalameter" % "0.2"