成功search的执行时间二进制searchalgorithm

我已经实现了使用Node.js的二进制searchalgorithm。 我logging了algorithm在随机生成的数组中search数字所用的时间。 我能够输出一个不成功的searchalgorithm所花费的时间。

但我无法弄清楚如何测量algorithm成功search数组中的数字所花费的时间。

这是我的代码 –

function binarySearch(A,K) { var l = 0; // min var r = A.length - 1; //max var n = A.length; var time = process.hrtime(); while(l <= r) { var m = Math.floor((l + r)/2); if(K == A[m]) { return m; } else if(K < A[m]) { r = m - 1; } else { l = m + 1; } } time = process.hrtime(time); console.log('%d',time[1]/1000000); return -1; } var randomlyGenerateArray = function(size) { var array = []; for (var i = 0; i < size; i++) { var temp = Math.floor(Math.random() * maxArrayValue); array.push(temp); } return array; } var sortNumber = function(a, b) { return a - b; } var program = function() { for (var i = 0; i <= 10000; i += 10) { var randomArray = randomlyGenerateArray(i); var sort = randomArray.sort(sortNumber); var randomKey = 100; var result = binarySearch(sort, randomKey); if(result < 0) { console.log("Element not found"); } else { console.log('Element found in position ',result); } } } var maxArrayValue = 1000; program(); 

我使用var time = process.hrtime(); 在algorithm开始时启动定时器,并使用time = process.hrtime(time); 结束定时器并将其输出到控制台中。

如何测量algorithm成功search数组中的数字所花费的时间。

任何帮助将不胜感激。

在调用二进制searchfunction之前启动你的定时器,并在调用之后结束它。无论search是否成功,你都会得到时间。

 var time = process.hrtime(); var result = binarySearch(sort, randomKey); time = process.hrtime(time); ......