Persistors are used to store results from executed benchmarks.

They can be specified by overriding the persistor method in your benchmark class.


It actually does no persisting at all. Use this persistor when you don’t need to store benchmark result history.


It uses Java serialization under the hood.

Note that this persistor is not a good choice if you want to keep your results while upgrading ScalaMeter version.


It writes regression data to disk as JSON. It’s the fastest among Persistors, although it produces the largest output files.


Default choice for all HTMLReport descendants.

It works like JSONSerializationPersistor, but instead of storing a plain JSON on disk it gzips it first. This allows to be much more space efficient than JSONSerializationPersistor whilst being a little slower (but still faster than SerializationPersistor).


For JSON-based persistors, Parameters are stored as Base64-encoded strings. These Base64-encoded strings can be produced by using Pickler classes. For this reason, every Parameter (and thus Gen implementation) requires a Pickler.

We provide Picklers for most commonly used types, which are available with the following import:


If you would like to make own generator or e.g. invoke Gen.enumeration with a custom class, then you must write Pickler for that class.

If you don’t want to implement a Pickler for your custom class, then you can import org.scalameter.picklers.noPickler._. You will not have to implement a custom Pickler, but you will only be able to use the SerializationPersistor.

A Pickler has to have a no-argument constructor, or be a top-level object.