//------------------------------------------------------------------------------------------------------- // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- var test = new Object(); test.nokill_singleuse = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x) & 0x3FFFF; o.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.kill_singleuse = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x) & 0x3FFFF; b.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.nokill_twouse_before = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x) & 0x3FFFF; o.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.kill_twouse_before = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF; b.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.nokill_multiuse_before = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x) & 0x3FFFF; o.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.kill_multiuse_before = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF; b.x = x + y; y = (o.x) & 0xFFFF; } return x + y; } test.nokill_multiuse_after = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x) & 0x3FFFF; o.x = x + y; y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF; } return x + y; } test.kill_multiuse_after = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x) & 0x3FFFF; b.x = x + y; y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF; } return x + y; } test.nokill_multiuse_before_and_after = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF; o.x = x + y; y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF; } return x + y; } test.kill_multiuse_before_and_after = function(o, b) { var x = 0; var y = 0; for (var i = 1; i < 10000; i++) { x = (o.x + o.x + o.x + o.x + o.x) & 0x3FFFF; b.x = x + y; y = (o.x + o.x + o.x + o.x + o.x) & 0xFFFF; } return x + y; } function runtest(name, func) { var total_time = 0; var iter = 0; for (var i = 0; i < 1000; i++) { o = new Object(); o.x = 1; var d = new Date(); func(o, o); total_time += (new Date() - d); iter++; if (total_time > 1000) { break; } } var output = name; if (name.length < 40) { for (var i = 0; i < 40 - name.length; i++) { output += " "; } } WScript.Echo(output + ": " + (((total_time / iter) * 1000) | 0) + " (per 1000 iteration, executed " + iter + " iterations)"); } for (var x in test) { runtest(x, test[x]); }