From fab4ada3c849becede839530d812748064654bd6 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Sat, 19 Mar 2011 09:57:18 +0530 Subject: Created a performance test harness and reporter --- .externalToolBuilders/JSTD_perf.launch | 10 +++++ .project | 10 +++++ jsTestDriver-coverage.conf | 2 - jsTestDriver-jquery.conf | 2 - jsTestDriver-perf.conf | 11 +++-- perf/jsonPerfSpec.js | 34 +++++----------- perf/testUtils.js | 73 ++++++++++++++++++++++++++++------ test-reset.sh | 4 ++ 8 files changed, 103 insertions(+), 43 deletions(-) create mode 100644 .externalToolBuilders/JSTD_perf.launch create mode 100755 test-reset.sh diff --git a/.externalToolBuilders/JSTD_perf.launch b/.externalToolBuilders/JSTD_perf.launch new file mode 100644 index 00000000..abbde2cd --- /dev/null +++ b/.externalToolBuilders/JSTD_perf.launch @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project index a5cd3ee0..0577303a 100644 --- a/.project +++ b/.project @@ -30,6 +30,16 @@ + + org.eclipse.ui.externaltools.ExternalToolBuilder + auto,full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/JSTD_perf.launch + + + org.eclipse.wst.jsdt.core.jsNature diff --git a/jsTestDriver-coverage.conf b/jsTestDriver-coverage.conf index b8989811..2021e740 100644 --- a/jsTestDriver-coverage.conf +++ b/jsTestDriver-coverage.conf @@ -24,8 +24,6 @@ load: exclude: - test/jquery_alias.js - - src/angular.prefix - - src/angular.suffix - src/angular-bootstrap.js - src/scenario/angular-bootstrap.js - src/AngularPublic.js diff --git a/jsTestDriver-jquery.conf b/jsTestDriver-jquery.conf index 9ae54022..3926378f 100644 --- a/jsTestDriver-jquery.conf +++ b/jsTestDriver-jquery.conf @@ -23,8 +23,6 @@ load: - example/personalLog/test/*.js exclude: - - src/angular.prefix - - src/angular.suffix - src/angular-bootstrap.js - src/AngularPublic.js - src/scenario/angular-bootstrap.js diff --git a/jsTestDriver-perf.conf b/jsTestDriver-perf.conf index 8b0518b3..bf400847 100644 --- a/jsTestDriver-perf.conf +++ b/jsTestDriver-perf.conf @@ -3,11 +3,16 @@ server: http://localhost:9876 load: - lib/jasmine-1.0.1/jasmine.js - lib/jasmine-jstd-adapter/JasmineAdapter.js - - lib/jquery/jquery-1.4.2.js - - test/jquery_remove.js - - build/angular.min.js + - src/Angular.js + - src/JSON.js + - src/*.js + - src/service/*.js + - src/angular-mocks.js - perf/data/*.js - perf/testUtils.js - perf/*.js exclude: + - src/angular-bootstrap.js + - src/scenario/angular-bootstrap.js + - src/AngularPublic.js diff --git a/perf/jsonPerfSpec.js b/perf/jsonPerfSpec.js index 01a489e2..edc4b6b2 100644 --- a/perf/jsonPerfSpec.js +++ b/perf/jsonPerfSpec.js @@ -1,28 +1,16 @@ describe('json', function() { it('angular parser', function() { - var duration = time(function() { - expect(angular.fromJson(largeJsonString)).toBeTruthy(); - }, 1); - - dump(duration/1 + ' ms per iteration'); - }); - - - it('angular delegating to native parser', function() { - var duration = time(function() { - expect(angular.fromJson(largeJsonString, true)).toBeTruthy(); - }, 100); - - dump(duration/100 + ' ms per iteration'); - }); - - - it('native json', function() { - var duration = time(function() { - expect(JSON.parse(largeJsonString)).toBeTruthy(); - }, 100); - - dump(duration/100 + ' ms per iteration'); + perf( + function angular() { + fromJson(largeJsonString); + }, + function nativeDelegate() { + fromJson(largeJsonString, true); + }, + function nativeJSON() { + JSON.parse(largeJsonString); + } + ); }); }); diff --git a/perf/testUtils.js b/perf/testUtils.js index ca016c31..2fc4f8a2 100644 --- a/perf/testUtils.js +++ b/perf/testUtils.js @@ -1,20 +1,67 @@ if (window.jstestdriver) { jstd = jstestdriver; - dump = angular.bind(jstd.console, jstd.console.log); + dump = bind(jstd.console, jstd.console.log); } -function time(fn, times) { - times = times || 1; +function time(fn) { + var count = 1, + targetTime = 500, + start = new Date().getTime(), + stop = start + targetTime, + elapsed, + end, + iterations, + pad = angularFilter.number; - var i, - start, - duration = 0; - - for (i=0; i