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
- Standalone SBT examples projects.
- Backwards-compatible JSON-based persistors:
JSONSerializationPersistorandGZIPJSONSerializationPersistor. - Add
Measurer.BoxingCountthat can measure (auto)boxing of Scala primitives. - Add
Measurer.MethodInvocationCountthat can count invocation of arbitrary methods. - Add
JBenchand entire new annotation-based Java API. - Add
include(new BenchTrait {})statement used to include benchmark templates that are themselves not standalone tests, but can be used only withinclude. These newincludestatements can only be invoked fromBench.Groupbenchmark type. See example here. For rationale, see mailing list discussion.
Changes
- Make
GZIPJSONSerializationPersistordefault for regression testing. - Rename
PerformanceTesttoBench. - The
Benchclass (formerlyPerformanceTest) now takes a type parameter that describes the type of the results it produces. For most benchmark types, this is justDouble, but some benchmark types measure running time profiles or method invocation counts and have different results. TheReporterandMeasurermust have the same type as the benchmark itself. - Change default directory for the benchmark results to
target/benchmarks.
Deprecated
- Move and mark as deprecated
JavaPerformanceTestand its components toorg.scalameter.deprecatedjapi. - Add compatibility type alias
PerformanceTestfororg.scalameter.Benchin api package. - Deprecate
include[BenchClass]statement in favor ofinclude(new BenchTrait {})(theBenchTraitis a normal benchmark, but must be implemented in a Scala trait).
Fixed
- Fix lack of default
reportDirwhen running benchmarks usingmainmethod. - 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"
ScalaMeter