NAME

Benchmark::Serialize::Library - Library of serialization modules

VERSION

Version 0.08

SYNOPSIS

use Benchmark::Serialize::Library;

Benchmark::Serialize::Library->register(
    MyModule => {
        deflate => sub { MyModule::deflate( $_[0] ) },
        inflate => sub { MyModule::inflate( $_[0] ) },
    }
);

my %benchmarks = Benchmark::Serialize::Library->load( ":all" );

DESCRIPTION

This module contains a library of serialization routines for use with Benchmark::Serialize

Library methods

This class provides the following methods

register( NAME => SPECIFICATION )

Registers a new benchmarkable form of serialization. A specification is a hashref containing the following fields:

deflate (required)

A coderef taking one argument (a perl structure) and returns the serialized structure

inflate (required)

A coderef taking one argument (a serialized structure) and returns the perl structure

packages (optional)

A array reference containing modules to be loaded. The default value is the name of the benchmark.

args (optional)

A coderef returning a list of aditional arguments for the deflate and inflate routines. Only run once during initialization of benchmark.

All additional fields are interpreted as tags used for selecting benchmarks.

load NAME|TAG|BENCHMARK ...

Loads and initializes a number of benchmarks. Arguments can be either registered names, registered tags, or unregistered benchmarks following the same format as the register method.

Returns a list of benchmarks

list

Returns a list of all available benchmarks. For each benchmark both the name and the version is returned in a array ref.

Benchmark methods

Each benchmark is represented by a object with the following mathods

deflate

Takes a perl structure as argument and returns the serialized form

inflate

Takes a serialized form as argument and returns the perl structure.

name

Returns the name of the benchmark

version

Returns the module version of the benchmark. For benchmark needing multiple loaded modules, the first in the specification list is used.

Known tags

The following tags are usec in the standard library

:all - All modules with premade benchmarks
:default - A default set of serialization modules
:core - Serialization modules included in core
:json - JSON modules
:yaml - YAML modules
:xml - XML formats

AUTHOR

Peter Makholm, <peter at makholm.net>

BUGS

Please report any bugs or feature requests to bug-benchmark-serialize at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Benchmark-Serialize. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

ACKNOWLEDGEMENTS

This module started out as a script written by Christian Hansen, see http://idisk.mac.com/christian.hansen/Public/perl/serialize.pl

COPYRIGHT & LICENSE

Copyright 2009-2010 Peter Makholm.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.