Began adding performance tests
parent
e0fb37daa0
commit
37bf2fa353
|
@ -0,0 +1,8 @@
|
||||||
|
This directory contains the performance tests. These tests contain basic
|
||||||
|
routines that perform a single action and output the result in seconds, with a
|
||||||
|
basic description of what has been done. The timing is done via the native Date
|
||||||
|
object to ensure that it can be run both server and client-side.
|
||||||
|
|
||||||
|
It is important that each test performs only a single operation to ensure that
|
||||||
|
the prior operations have no consequences on the previous, at least when run
|
||||||
|
server-side by invoking a separate executable for each.
|
|
@ -0,0 +1,91 @@
|
||||||
|
/**
|
||||||
|
* Common performance testing functionality
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package performance
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores start time
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
var start = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Includes a module from the lib directory
|
||||||
|
*
|
||||||
|
* @param {string} name module name
|
||||||
|
*
|
||||||
|
* @return {Object} module exports
|
||||||
|
*/
|
||||||
|
exports.require = function( name )
|
||||||
|
{
|
||||||
|
return require( '../../lib/' + name );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple wrapper to perform testing and output the result
|
||||||
|
*
|
||||||
|
* @param {function()} test performance test to perform
|
||||||
|
* @param {string=} desc test description
|
||||||
|
*
|
||||||
|
* @return {undefined}
|
||||||
|
*/
|
||||||
|
exports.test = function( test, desc )
|
||||||
|
{
|
||||||
|
exports.start();
|
||||||
|
test();
|
||||||
|
exports.report( desc );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the timer
|
||||||
|
*
|
||||||
|
* @return {undefined}
|
||||||
|
*/
|
||||||
|
exports.start = function()
|
||||||
|
{
|
||||||
|
start = ( new Date() ).getTime();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outputs the time elapsed, followed by the description (if available)
|
||||||
|
*
|
||||||
|
* @param {string=} desc test description
|
||||||
|
*
|
||||||
|
* @return {undefined}
|
||||||
|
*/
|
||||||
|
exports.report = function( desc )
|
||||||
|
{
|
||||||
|
desc = desc || '';
|
||||||
|
|
||||||
|
var end = ( new Date() ).getTime(),
|
||||||
|
total = ( ( end - start ) / 1000 ).toFixed( 3 )
|
||||||
|
;
|
||||||
|
|
||||||
|
console.log( total + 's' +
|
||||||
|
( ( desc ) ? ( ': ' + desc ) : '' )
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* Tests amount of time taken to declare 1000 classes
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package performance
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var common = require( __dirname + '/common.js' ),
|
||||||
|
Class = common.require( 'class' )
|
||||||
|
|
||||||
|
count = 1000
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
common.test( function()
|
||||||
|
{
|
||||||
|
var i = count;
|
||||||
|
|
||||||
|
while ( i-- )
|
||||||
|
{
|
||||||
|
Class( {} );
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 'Declare ' + count + ' empty anonymous classes' );
|
|
@ -0,0 +1,43 @@
|
||||||
|
/**
|
||||||
|
* Tests amount of time taken to instantiate anonymous classes
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package performance
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var common = require( __dirname + '/common.js' ),
|
||||||
|
Class = common.require( 'class' )
|
||||||
|
|
||||||
|
count = 5000,
|
||||||
|
Foo = Class( {} )
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
common.test( function()
|
||||||
|
{
|
||||||
|
var i = count;
|
||||||
|
|
||||||
|
while ( i-- )
|
||||||
|
{
|
||||||
|
Foo();
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 'Instantiate ' + count + ' empty anonymous classes' );
|
|
@ -0,0 +1,44 @@
|
||||||
|
/**
|
||||||
|
* Tests amount of time taken to instantiate named classes
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package performance
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var common = require( __dirname + '/common.js' ),
|
||||||
|
Class = common.require( 'class' )
|
||||||
|
|
||||||
|
count = 5000,
|
||||||
|
Foo = Class( 'Foo', {} )
|
||||||
|
;
|
||||||
|
|
||||||
|
common.test( function()
|
||||||
|
{
|
||||||
|
var i = count;
|
||||||
|
|
||||||
|
while ( i-- )
|
||||||
|
{
|
||||||
|
// to be extra confident that V8 or another compiler won't realize this
|
||||||
|
// is useless and optimize it out
|
||||||
|
Foo();
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 'Instantiate ' + count + ' empty named classes' );
|
|
@ -0,0 +1,33 @@
|
||||||
|
/**
|
||||||
|
* Tests amount of time spent on requiring class module
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package performance
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var common = require( __dirname + '/common.js' );
|
||||||
|
|
||||||
|
// we run this test once because require() will cache the object in memory
|
||||||
|
common.test( function()
|
||||||
|
{
|
||||||
|
common.require( 'class' );
|
||||||
|
}, 'Require class module' );
|
||||||
|
|
Loading…
Reference in New Issue