在JS中統計函式執行次數

2021-09-11 15:27:43 字數 1975 閱讀 7834

一、統計函式執行次數

常規的方法可以使用 console.log 輸出來肉眼計算有多少個輸出

不過在chrome中內建了乙個 console.count 方法,可以統計乙個字串輸出的次數。我們可以利用這個來間接地統計函式的執行次數

function

somefunction

() function

otherfunction

() somefunction(); // some 已經執行: 1

somefunction(); // some 已經執行: 2

otherfunction(); // other 已經執行: 1

console.count(); // default: 1

console.count(); // default: 2

複製**

不帶引數則為 default 值,否則將會輸出該字串的執行次數,觀測起來還是挺方便的

當然,除了輸出次數之外,還想獲取乙個純粹的次數值,可以用裝飾器將函式包裝一下,內部使用物件儲存呼叫次數即可

var getfuncalltimes = (function

() }; }

// 執行次數

var funtimes = {};

// 給fun新增裝飾器,fun執行前將進行計數累加

return

function(fun, funname)

// 繫結

funtimes[funname] = decoratorbefore(fun, function

() );

// 定義函式的值為計數值(初始化)

funtimes[funname].calltimes = 0;

return funtimes[funname];

}})();

function

somefunction

() function

otherfunction

() somefunction = getfuncalltimes(somefunction, 'somefunction');

somefunction(); // count 1

somefunction(); // count 2

somefunction(); // count 3

somefunction(); // count 4

console.log(somefunction.calltimes); // 4

otherfunction = getfuncalltimes(otherfunction);

otherfunction(); // count 1

console.log(otherfunction.calltimes); // 1

otherfunction(); // count 2

console.log(otherfunction.calltimes); // 2

複製**

如何控制函式的呼叫次數

也可以通過閉包來控制函式的執行次數

function

somefunction

() function

otherfunction

() function

setfuncallmaxtimes(fun, times, nextfun) else

if (nextfun && typeof nextfun === 'function')

};}var fun = setfuncallmaxtimes(somefunction, 3, otherfunction);

fun(); // 1

fun(); // 1

fun(); // 1

fun(); // 2

fun(); // 2

複製**

Python中統計函式的執行耗時

import time def time me fn start time.clock fn args,kwargs print s cost s second fn.name time.clock start 這個裝飾器可以在方便地統計函式執行的耗時。用來分析指令碼的效能是最好不過了。這樣用 ti...

Python中統計函式執行耗時的方法

import time def time me fn def wrapper args,kwargs start time.clock fn程式設計客棧 args,kwargs print s cost s second fn.name time.clock start return wrapper...

在海量資料中統計出現次數最多的n個

在海量資料中統計出現次數最多的n個 分兩種情況,1 如果資料能夠在記憶體中放下,比如如果海量資料是ip位址,最多有4g個ip位址,每個ip位址佔4個位元組 需要記憶體16g,如果內存在幾十g,則完全可以全部裝入記憶體,直接讀取大檔案,然後建立乙個hash表,統計次數,最後再用堆統計最大的n個 2 如...