<!DOCTYPE html> <html> <!-- Copyright 2014 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. --> <!-- --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Performance Tests - goog.structs.Queue</title> <link rel="stylesheet" type="text/css" href="../testing/performancetable.css"/> <script src="../base.js"></script> <script> goog.require('goog.functions'); goog.require('goog.structs.Queue'); goog.require('goog.testing.PerformanceTable'); goog.require('goog.testing.jsunit'); </script> </head> <body> <h1>goog.structs.Queue Performance Tests</h1> <p> <strong>User-agent:</strong> <script>document.write(navigator.userAgent);</script> </p> <div id="perfTable"></div> <hr> <script> var table = new goog.testing.PerformanceTable( goog.dom.getElement('perfTable')); // Number of operations to measure in each table line. var OPS_COUNT = 10000; var smallSizes = [1, 2, 5, 10, 20, 50, 100, 1000, 10000]; var largeSizes = [100000]; function populateQueue(size) { var q = new goog.structs.Queue(); for (var i = 0; i < size; ++i) { q.enqueue(i); } return q; } function enqueueDequeueTest(size) { var q = populateQueue(size); table.run(function() { for (var i = 0; i < OPS_COUNT; ++i) { q.dequeue(); q.enqueue(i); } }, 'Enqueue and dequeue, size ' + size); } function containsTest(size) { var q = populateQueue(size); table.run(function() { for (var i = 0; i < OPS_COUNT; ++i) { q.contains(i); } }, 'Contains every element, size ' + size); } function removeTest(size) { var q = populateQueue(size); if (size == 1) { return; } table.run(function() { var offset = Math.round(size / 2); for (var i = 0; i < OPS_COUNT; ++i) { q.remove(i + offset); q.enqueue(i + size); } }, 'Remove element from the middle, size ' + size); } function getValuesTest(size) { var q = populateQueue(size); table.run(function() { for (var i = 0; i < OPS_COUNT; ++i) { q.getValues()[size - 1]; } }, 'Get values, size ' + size); } function testEnqueueDequeueSmall() { goog.array.forEach(smallSizes, enqueueDequeueTest); } function testEnqueueDequeueLarge() { goog.array.forEach(largeSizes, enqueueDequeueTest); } function testContainsSmall() { goog.array.forEach(smallSizes, containsTest); } function testContainsLarge() { goog.array.forEach(largeSizes, containsTest); } function testRemoveSmall() { goog.array.forEach(smallSizes, removeTest); } function testRemoveLarge() { goog.array.forEach(largeSizes, removeTest); } function testGetValuesSmall() { goog.array.forEach(smallSizes, getValuesTest); } function testGetValuesLarge() { goog.array.forEach(largeSizes, getValuesTest); } </script> </body> </html>