michael@0: // |reftest| random -- bogus perf test (bug 467263) michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: /* michael@0: * Date: 27 September 2001 michael@0: * michael@0: * SUMMARY: Performance: truncating even very large arrays should be fast! michael@0: * See http://bugzilla.mozilla.org/show_bug.cgi?id=101964 michael@0: * michael@0: * Adjust this testcase if necessary. The FAST constant defines michael@0: * an upper bound in milliseconds for any truncation to take. michael@0: */ michael@0: //----------------------------------------------------------------------------- michael@0: var UBound = 0; michael@0: var BUGNUMBER = 101964; michael@0: var summary = 'Performance: truncating even very large arrays should be fast!'; michael@0: var BIG = 10000000; michael@0: var LITTLE = 10; michael@0: var FAST = 50; // array truncation should be 50 ms or less to pass the test michael@0: var MSG_FAST = 'Truncation took less than ' + FAST + ' ms'; michael@0: var MSG_SLOW = 'Truncation took '; michael@0: var MSG_MS = ' ms'; michael@0: var status = ''; michael@0: var statusitems = []; michael@0: var actual = ''; michael@0: var actualvalues = []; michael@0: var expect= ''; michael@0: var expectedvalues = []; michael@0: michael@0: michael@0: michael@0: status = inSection(1); michael@0: var arr = Array(BIG); michael@0: var start = new Date(); michael@0: arr.length = LITTLE; michael@0: actual = elapsedTime(start); michael@0: expect = FAST; michael@0: addThis(); michael@0: michael@0: michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: test(); michael@0: //----------------------------------------------------------------------------- michael@0: michael@0: michael@0: michael@0: function elapsedTime(startTime) michael@0: { michael@0: return new Date() - startTime; michael@0: } michael@0: michael@0: michael@0: function addThis() michael@0: { michael@0: statusitems[UBound] = status; michael@0: actualvalues[UBound] = isThisFast(actual); michael@0: expectedvalues[UBound] = isThisFast(expect); michael@0: UBound++; michael@0: } michael@0: michael@0: michael@0: function isThisFast(ms) michael@0: { michael@0: if (ms <= FAST) michael@0: return MSG_FAST; michael@0: return MSG_SLOW + ms + MSG_MS; michael@0: } michael@0: michael@0: michael@0: function test() michael@0: { michael@0: enterFunc ('test'); michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (summary); michael@0: michael@0: for (var i=0; i