aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_perf.html
diff options
context:
space:
mode:
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.html298
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>