Javascript函数执行的总持续时间?

时间:2014-11-28 23:30:47

标签: javascript

//this is a loop every 10 seconds it will run again and again.

function GetSomthing(){
    start = new Date().getTime()
    //do someting
    end = new Date().getTime()
    }

TotalTime = (end - start);//Total Time reset every time the function restart execution

我们将获得在变量“TotalTime”上执行GetSomthing函数所花费的总时间。 当GetSomthing函数再次调用时,“TotalTime”从Zero再次启动。 我需要将“TotalTime”保存到一个变量中,该变量显示Main Function所花费的时间,而不管GetSomthing函数。

我们能救吗? TotalTime = (end - start);到一个数组并将所有数组值加到一个新变量?

1 个答案:

答案 0 :(得分:1)

我今天在SO上创建了一个类似问题的函数。这个自动计算全局函数的非常准确的平均执行时间。您可以根据自己的需要进行修改:

function testFunc(test) {
    for(var i=0;i<100000000;i++) { i = i+test; }
    };

function testFunc2(test) {
    for(var i=0;i<100000000;i++) { i = i+test; }
    };

var getPerfResults = (function(){
    var timeRecords = {}, xTr = 0, name;
    var setPerfRecords = function(oFn, fnIdentity) {
        timeRecords[fnIdentity] = [];
        return function(){
            var xTime = performance.now();
            var xResult = oFn.apply(this, arguments);
            xTime = performance.now()-xTime;
            timeRecords[fnIdentity].push(xTime);
            return xResult;
            };
        };
    for (name in window) {
        try { window[name]; // Security exception may occur here
        if (typeof window[name] === 'function')
            window[name] = setPerfRecords(window[name], name);
            }
        catch(err) { }
        }
    return function() {
        var resultObj = {}, n, i;
        for(i in timeRecords) {
            if(timeRecords.hasOwnProperty(i)
             && timeRecords[i].length > 0) {
                resultObj[i] = 0; 
                for(n=0;n<timeRecords[i].length;n++) {
                    resultObj[i] = resultObj[i]+timeRecords[i][n];
                    }
                resultObj[i] = resultObj[i]/timeRecords[i].length;
                }
            }
        return resultObj;
        };
    }());

testFunc(1);
testFunc(10);
testFunc(100);
testFunc(1000);
testFunc(10000);
testFunc2(0);

document.body.innerHTML = JSON.stringify(getPerfResults());