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