From 311e39d67cb25013aa0c417e9da77a59ab822486 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Fri, 11 Mar 2011 19:14:10 -0500 Subject: [PATCH] Added performance test for reading properties, internal and external --- test/perf/common.js | 2 +- test/perf/perf-class-get-property.js | 101 +++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 test/perf/perf-class-get-property.js diff --git a/test/perf/common.js b/test/perf/common.js index dc69cc4..538d7a7 100644 --- a/test/perf/common.js +++ b/test/perf/common.js @@ -89,7 +89,7 @@ exports.report = function( count, desc ) var end = ( new Date() ).getTime(), total = ( ( end - start ) / 1000 ).toFixed( 3 ), - pers = ( total / count ).toFixed( 7 ) + pers = ( total / count ).toFixed( 10 ) ; console.log( total + "s (x" + count + " = " + pers + "s each)" + diff --git a/test/perf/perf-class-get-property.js b/test/perf/perf-class-get-property.js new file mode 100644 index 0000000..4e3a0ed --- /dev/null +++ b/test/perf/perf-class-get-property.js @@ -0,0 +1,101 @@ +/** + * Tests amount of time taken to declare read properties internally and + * externally + * + * 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 . + * + * @author Mike Gerwitz + * @package performance + */ + + +var common = require( __dirname + '/common.js' ), + Class = common.require( 'class' ), + + // we need many tests for a measurable result + count = 500000 + + // instance of anonymous class + foo = Class( { + 'public pub_bar': 'foo', + 'protected prot_bar': 'bar', + 'private priv_bar': 'baz', + + 'public testInternal': function() + { + var _self = this; + + common.test( function() + { + var i = count, + val = null + ; + + while ( i-- ) + { + val = _self.pub_bar; + } + }, count, 'Read public properties internally' ); + + + common.test( function() + { + var i = count, + val = null + ; + + while ( i-- ) + { + val = _self.prot_bar; + } + }, count, 'Read protected properties internally' ); + + + common.test( function() + { + var i = count, + val = null + ; + + while ( i-- ) + { + val = _self.priv_bar; + } + }, count, 'Read private properties internally' ); + }, + } )() +; + + +common.test( function() +{ + var i = count, + val = null + ; + + while ( i-- ) + { + val = foo.pub_bar; + } + +}, count, 'Read public properties externally' ); + + +// run the same test internally +foo.testInternal(); +