function createBenchmark( shape ) {
	var arrays;
	var shapes;
	var x;
	var y;
	var z;

	shapes = [
		[ 1, shape[ 1 ] ],
		[ shape[ 0 ], 1 ],
		shape
	];
	x = filled2dBy( shapes[ 0 ], uniform( -100.0, 100.0 ) );
	y = filled2dBy( shapes[ 1 ], uniform( -100.0, 100.0 ) );
	z = zeros2d( shapes[ 2 ] );

	arrays = [ x, y, z ];

	return benchmark;

	/**
	* Benchmark function.
	*
	* @private
	* @param {Benchmark} b - benchmark instance
	*/
	function benchmark( b ) {
		var i0;
		var i1;
		var i;

		b.tic();
		for ( i = 0; i < b.iterations; i++ ) {
			bbinary2d( arrays, shapes, add );
			i1 = i % shapes[ 1 ][ 0 ];
			i0 = i % shapes[ 1 ][ 1 ];
			if ( isnan( arrays[ 2 ][ i1 ][ i0 ] ) ) {
				b.fail( 'should not return NaN' );
			}
		}
		b.toc();

		i1 = i % shapes[ 1 ][ 0 ];
		i0 = i % shapes[ 1 ][ 1 ];
		if ( isnan( arrays[ 2 ][ i1 ][ i0 ] ) ) {
			b.fail( 'should not return NaN' );
		}
		b.pass( 'benchmark finished' );
		b.end();
	}
}
Creates a benchmark function.

@private
@param {PositiveIntegerArray} shape - output array shape
@returns {Function} benchmark function