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:
JSONSerializationPersistor
andGZIPJSONSerializationPersistor
. - Add
Measurer.BoxingCount
that can measure (auto)boxing of Scala primitives. - Add
Measurer.MethodInvocationCount
that can count invocation of arbitrary methods. - Add
JBench
and 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 newinclude
statements can only be invoked fromBench.Group
benchmark type. See example here. For rationale, see mailing list discussion.
Changes
- Make
GZIPJSONSerializationPersistor
default for regression testing. - Rename
PerformanceTest
toBench
. - The
Bench
class (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. TheReporter
andMeasurer
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 toorg.scalameter.deprecatedjapi
. - Add compatibility type alias
PerformanceTest
fororg.scalameter.Bench
in api package. - Deprecate
include[BenchClass]
statement in favor ofinclude(new BenchTrait {})
(theBenchTrait
is a normal benchmark, but must be implemented in a Scala trait).
Fixed
- Fix lack of default
reportDir
when running benchmarks usingmain
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"