123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- goog.provide('goog.labs.structs.MapPerf');
- goog.setTestOnly('goog.labs.structs.MapPerf');
- goog.require('goog.asserts');
- goog.require('goog.dom');
- goog.require('goog.dom.TagName');
- goog.require('goog.labs.structs.Map');
- goog.require('goog.structs.Map');
- goog.require('goog.testing.PerformanceTable');
- goog.require('goog.testing.jsunit');
- goog.scope(function() {
- var MapPerf = goog.labs.structs.MapPerf;
- MapPerf.MapType;
- MapPerf.perfTable;
- MapPerf.keyList = [];
- MapPerf.MAX_NUM_KEY = 10000;
- MapPerf.fillMap = function(map, numKeys) {
- goog.asserts.assert(numKeys <= MapPerf.MAX_NUM_KEY);
- for (var i = 0; i < numKeys; ++i) {
- map.set(MapPerf.keyList[i], i);
- }
- };
- MapPerf.primeMapWithDeletion = function(map) {
- for (var i = 0; i < 1000; ++i) {
- map.set(MapPerf.keyList[i], i);
- }
- for (var i = 0; i < 1000; ++i) {
- map.remove(MapPerf.keyList[i]);
- }
- return map;
- };
- MapPerf.runPerformanceTestForMapGet = function(map, message) {
- MapPerf.fillMap(map, 10000);
- MapPerf.perfTable.run(function() {
-
- var localMap = map;
- var localKeyList = MapPerf.keyList;
- for (var i = 0; i < 500; ++i) {
- var sum = 0;
- for (var j = 0; j < 10000; ++j) {
- sum += localMap.get(localKeyList[j]);
- }
- }
- }, message);
- };
- MapPerf.runPerformanceTestForMapSet = function(map, message) {
- MapPerf.perfTable.run(function() {
-
- var localMap = map;
- var localKeyList = MapPerf.keyList;
- for (var i = 0; i < 500; ++i) {
- for (var j = 0; j < 10000; ++j) {
- localMap.set(localKeyList[i], i);
- }
- }
- }, message);
- };
- goog.global['setUpPage'] = function() {
- var content = goog.dom.createDom(goog.dom.TagName.DIV);
- goog.dom.insertChildAt(document.body, content, 0);
- goog.dom.append(
- content,
- goog.dom.createDom(
- goog.dom.TagName.H1, null, 'Closure Performance Tests - Map'),
- goog.dom.createDom(
- goog.dom.TagName.P, null,
- goog.dom.createDom(goog.dom.TagName.STRONG, null, 'User-agent: '),
- goog.dom.createDom(
- goog.dom.TagName.SPAN, {'id': 'ua'}, navigator.userAgent)),
- goog.dom.createDom(goog.dom.TagName.DIV, {'id': 'perf-table'}),
- goog.dom.createDom(goog.dom.TagName.HR));
- MapPerf.perfTable =
- new goog.testing.PerformanceTable(goog.dom.getElement('perf-table'));
-
- for (var i = 0; i < MapPerf.MAX_NUM_KEY; ++i) {
- MapPerf.keyList.push('k' + i);
- }
- };
- goog.global['testGetFromLabsMap'] = function() {
- MapPerf.runPerformanceTestForMapGet(
- new goog.labs.structs.Map(), '#get: no previous deletion (Labs)');
- };
- goog.global['testGetFromOriginalMap'] = function() {
- MapPerf.runPerformanceTestForMapGet(
- new goog.structs.Map(), '#get: no previous deletion (Original)');
- };
- goog.global['testGetWithPreviousDeletionFromLabsMap'] = function() {
- MapPerf.runPerformanceTestForMapGet(
- MapPerf.primeMapWithDeletion(new goog.labs.structs.Map()),
- '#get: with previous deletion (Labs)');
- };
- goog.global['testGetWithPreviousDeletionFromOriginalMap'] = function() {
- MapPerf.runPerformanceTestForMapGet(
- MapPerf.primeMapWithDeletion(new goog.structs.Map()),
- '#get: with previous deletion (Original)');
- };
- goog.global['testSetFromLabsMap'] = function() {
- MapPerf.runPerformanceTestForMapSet(
- new goog.labs.structs.Map(), '#set: no previous deletion (Labs)');
- };
- goog.global['testSetFromOriginalMap'] = function() {
- MapPerf.runPerformanceTestForMapSet(
- new goog.structs.Map(), '#set: no previous deletion (Original)');
- };
- });
|