diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html b/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html deleted file mode 100644 index 8294b39..0000000 --- a/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html +++ /dev/null @@ -1,298 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2009 The Closure Library Authors. All Rights Reserved. - -Use of this source code is governed by the Apache License, Version 2.0. -See the COPYING file for details. ---> -<!-- -Author: attila@google.com (Attila Bodis) ---> -<head> -<meta http-equiv="X-UA-Compatible" content="IE=edge"> - <title>Closure Performance Tests - goog.pubsub.PubSub</title> - <link rel="stylesheet" href="../testing/performancetable.css" /> - <script src="../base.js"></script> - <script> - goog.require('goog.events'); - goog.require('goog.events.EventTarget'); - goog.require('goog.pubsub.PubSub'); - goog.require('goog.testing.PerformanceTable'); - goog.require('goog.testing.PerformanceTimer'); - goog.require('goog.testing.jsunit'); - </script> -</head> -<body> - <h1>goog.pubsub.PubSub Performance Tests</h1> - <p> - <b>User-agent:</b> <script>document.write(navigator.userAgent);</script> - </p> - <p> - Compares the performance of the event system (<code>goog.events.*</code>) - with the <code>goog.pubsub.PubSub</code> class. - </p> - <p> - The baseline test creates 1000 event targets and 1000 objects that handle - events dispatched by the event targets, and has each event target dispatch - 2 events 5 times each. - </p> - <p> - The single-<code>PubSub</code> test creates 1000 publishers, 1000 - subscribers, and a single pubsub channel. Each subscriber subscribes to - topics on the same pubsub channel. Each publisher publishes 5 messages to - 2 topics each via the pubsub channel. - </p> - <p> - The multi-<code>PubSub</code> test creates 1000 publishers that are - subclasses of <code>goog.pubsub.PubSub</code> and 1000 subscribers. Each - subscriber subscribes to its own publisher. Each publisher publishes 5 - messages to 2 topics each via its own pubsub channel. - </p> - <div id="perfTable"></div> - <hr> - <script> - var targets, publishers, pubsubs, handlers; - - // Number of objects to test per run. - var SAMPLES_PER_RUN = 1000; - - // The performance table & performance timer. - var table, timer; - - // Event/topic identifiers. - var ACTION = 'action'; - var CHANGE = 'change'; - - // Number of times handlers have been called. - var actionCount = 0; - var changeCount = 0; - - // Generic event handler class. - function Handler() { - } - Handler.prototype.handleAction = function() { - actionCount++; - }; - Handler.prototype.handleChange = function() { - changeCount++; - }; - - // Generic publisher class that uses a global pubsub channel. - function Publisher(pubsub, id) { - this.pubsub = pubsub; - this.id = id; - } - Publisher.prototype.publish = function(topic) { - this.pubsub.publish(this.id + '.' + topic); - }; - - // PubSub subclass; allows clients to subscribe and uses itself to publish. - function PubSub() { - goog.pubsub.PubSub.call(this); - } - goog.inherits(PubSub, goog.pubsub.PubSub); - - // EventTarget subclass; uses goog.events.* to dispatch events. - function Target() { - goog.events.EventTarget.call(this); - } - goog.inherits(Target, goog.events.EventTarget); - Target.prototype.fireEvent = function(type) { - this.dispatchEvent(type); - }; - - function initHandlers(count) { - for (var i = 0; i < count; i++) { - handlers[i] = new Handler(); - } - } - - function initPublishers(pubsub, count) { - for (var i = 0; i < count; i++) { - publishers[i] = new Publisher(pubsub, i); - } - } - - function initPubSubs(count) { - for (var i = 0; i < count; i++) { - pubsubs[i] = new PubSub(); - } - } - - function initTargets(count) { - for (var i = 0; i < count; i++) { - targets[i] = new Target(); - } - } - - function createEventListeners(count) { - initHandlers(count); - initTargets(count); - for (var i = 0; i < count; i++) { - goog.events.listen(targets[i], ACTION, Handler.prototype.handleAction, - false, handlers[i]); - goog.events.listen(targets[i], CHANGE, Handler.prototype.handleChange, - false, handlers[i]); - } - } - - function createGlobalSubscriptions(pubsub, count) { - initHandlers(count); - initPublishers(pubsub, count); - for (var i = 0; i < count; i++) { - pubsub.subscribe(i + '.' + ACTION, Handler.prototype.handleAction, - handlers[i]); - pubsub.subscribe(i + '.' + CHANGE, Handler.prototype.handleChange, - handlers[i]); - } - } - - function createSubscriptions(count) { - initHandlers(count); - initPubSubs(count); - for (var i = 0; i < count; i++) { - pubsubs[i].subscribe(ACTION, Handler.prototype.handleAction, - handlers[i]); - pubsubs[i].subscribe(CHANGE, Handler.prototype.handleChange, - handlers[i]); - } - } - - function dispatchEvents(count) { - for (var i = 0; i < count; i++) { - for (var j = 0; j < 5; j++) { - targets[i].fireEvent(ACTION); - targets[i].fireEvent(CHANGE); - } - } - } - - function publishGlobalMessages(count) { - for (var i = 0; i < count; i++) { - for (var j = 0; j < 5; j++) { - publishers[i].publish(ACTION); - publishers[i].publish(CHANGE); - } - } - } - - function publishMessages(count) { - for (var i = 0; i < count; i++) { - for (var j = 0; j < 5; j++) { - pubsubs[i].publish(ACTION); - pubsubs[i].publish(CHANGE); - } - } - } - - function setUpPage() { - timer = new goog.testing.PerformanceTimer(); - timer.setNumSamples(10); - timer.setTimeoutInterval(9000); - timer.setDiscardOutliers(true); - table = new goog.testing.PerformanceTable( - goog.dom.getElement('perfTable'), timer); - } - - function setUp() { - actionCount = 0; - changeCount = 0; - handlers = []; - publishers = []; - pubsubs = []; - targets = []; - } - - function tearDown() { - goog.events.removeAll(); - } - - function testCreateEventListeners() { - table.run(goog.partial(createEventListeners, SAMPLES_PER_RUN), - '1A: Create event listeners'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 2, - goog.events.getTotalListenerCount()); - assertEquals(0, actionCount); - assertEquals(0, changeCount); - } - - function testCreateGlobalSubscriptions() { - var pubsub = new goog.pubsub.PubSub(); - table.run( - goog.partial(createGlobalSubscriptions, pubsub, SAMPLES_PER_RUN), - '1B: Create global subscriptions'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 2, - pubsub.getCount()); - assertEquals(0, actionCount); - assertEquals(0, changeCount); - pubsub.dispose(); - } - - function testCreateSubscripions() { - table.run(goog.partial(createSubscriptions, SAMPLES_PER_RUN), - '1C: Create subscriptions'); - assertEquals(0, actionCount); - assertEquals(0, changeCount); - } - - function testDispatchEvents() { - createEventListeners(SAMPLES_PER_RUN); - table.run(goog.partial(dispatchEvents, SAMPLES_PER_RUN), - '2A: Dispatch events'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - } - - function testPublishGlobalMessages() { - var pubsub = new goog.pubsub.PubSub(); - createGlobalSubscriptions(pubsub, SAMPLES_PER_RUN); - table.run( - goog.partial(publishGlobalMessages, SAMPLES_PER_RUN), - '2B: Publish global messages'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - pubsub.dispose(); - } - - function testPublishMessages() { - createSubscriptions(SAMPLES_PER_RUN); - table.run(goog.partial(publishMessages, SAMPLES_PER_RUN), - '2C: Publish messages'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - } - - function testEvents() { - table.run(function() { - createEventListeners(SAMPLES_PER_RUN); - dispatchEvents(SAMPLES_PER_RUN); - }, '3A: Events'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 2, - goog.events.getTotalListenerCount()); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - } - - function testSinglePubSub() { - table.run(function() { - var pubsub = new goog.pubsub.PubSub(); - createGlobalSubscriptions(pubsub, SAMPLES_PER_RUN); - publishGlobalMessages(SAMPLES_PER_RUN); - pubsub.dispose(); - }, '3B: Single PubSub'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - } - - function testMultiPubSub() { - table.run(function() { - createSubscriptions(SAMPLES_PER_RUN); - publishMessages(SAMPLES_PER_RUN); - }, '3C: Multi PubSub'); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, actionCount); - assertEquals(SAMPLES_PER_RUN * timer.getNumSamples() * 5, changeCount); - } - </script> -</body> -</html> |