也许这就是你正在寻找的:
var threadTest = function(durationMs, outputFkt, outputInterval) {
var startDateTime = (new Date()).getTime();
counter = 0,
testDateTime = null,
since = 0,
lastSince = -1;
do {
testDateTime = (new Date()).getTime();
counter++;
since = testDateTime - startDateTime;
if(typeof outputFkt != 'undefined' && lastSince != since && testDateTime % outputInterval == 0) {
outputFkt(counter, since);
lastSince = since;
}
} while(durationMs > since);
if(typeof outputFkt != 'undefined') {
outputFkt(counter, since);
}
return counter;
}
此方法将简单地重复循环检查
durationMS - duartion it should run in miliseconds
OPTIONAL:
outputFkt - a callback method, for logging purpose function(currentCount, milisecondsSinceStart)
outputInterval - intervall the output function will be called
我想因为你不想测试一个真正的函数,甚至 NP-Hard 问题在输入长度和时间之间都有一个比率,这可能是一个简单的方法。您可以在任何时间间隔测量性能,当然还可以接收循环数作为返回值,因此您可以轻松地测量线程间干扰彼此性能的程度,甚至在每个循环的基础上都有回调。
作为一个例子,我是这样称呼它的(这里有 jQuery 和 Dom 的用法,但你可以看到可选的)
$(document).ready(function() {
var outputFkt = function(counter, since) {
$('body').append('<p>'+counter+', since '+since+'</p>');
};
threadTest(1000, outputFkt, 20);
});
最后一个警告:这个函数当然不能比 JS 本身更精确。由于现代浏览器在一毫秒内可以做不止一个周期,所以会有一个小尾巴被剪掉。
更新
考虑一下......实际上使用ouputFkt
回调不仅仅是输出可以提供很好的洞察力。您可以传递一个使用某些共享属性的方法,或者您可以使用它来测试大量内存使用情况。