The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Old results: approx. 1.91_03: 34 secs (512, 10 iter)
# With simply folded-out threading: 3.4 secs (10fold!)

# For 512,30iter:

package PDL::Bench;

use vars qw(@ISA @EXPORT $AUTOLOAD);

require Exporter;
require DynaLoader;

@ISA = qw(Exporter DynaLoader);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
@EXPORT = qw(
	do_benchmark
);

bootstrap PDL::Bench;

use Benchmark;

sub do_benchmark {
	$size = 512;
	$niter = 80;
	$piddle = (PDL->zeroes($size,$size));
	$dref = ${$piddle->get_dataref()};
	timethese($niter, {
#		'With double piddle' => 'for($i=0; $i<100; $i++) {$piddle++}',
		'With double piddle' => '$piddle++;',
		'C using ++' => 'c_use_pp($dref)',
		'C using foo = bar + baz' => 'c_use_add($dref,$dref,$dref)',
		'C using incrs and foo = bar + baz' => 'c_use_add_incr($dref,$dref,$dref,1,1,1)'
	});
}

1;