使用console進行 效能測試 和 計算程式碼執行時間
對於前端開發人員,在開發過程中經常需要監控某些表示式或變數的值,如果使用用 debugger 會顯得過於笨重,最常用的方法是會將值輸出到控制檯上方便除錯。
最常用的語句就是console.log(expression)了。
從早前一道阿里實習生招聘筆試題目入手:
function f1() {
console.time('time span');
}
function f2() {
console.timeEnd('time span');
}
setTimeout(f1, 100);
setTimeout(f2, 200);
function waitForMs(n) {
var now = Date.now();
while (Date.now() - now < n) {
}
}
waitForMs(500);//time span: 0ms
我們先說說關於console的高階操作,最後在一起分析這道題目。
trace
console.trace()用來追蹤函式的呼叫過程。
在大型專案尤其是框架開發中,函式的呼叫軌跡可以十分複雜,console.trace()方法可以將函式的被呼叫過程清楚地輸出到控制檯上。
function tracer(a) { console.trace();return a; } function foo(a) { return bar(a); } function bar(a) { return tracer(a); } var a = foo('tracer');
table
使用console將物件以表格呈現
可將傳入的物件,或陣列以表格形式輸出,相比傳統樹形輸出,這種輸出方案更適合內部元素排列整齊的物件或陣列,不然可能會出現很多的 undefined。
var people = {
flora: {
name: 'floraLam',
age: '12'
},
john: {
name: 'johnMa',
age: '45'
},
ray:{
name:'rayGuo',
age:'22'
}
};
console.table(people);
火狐的控制檯:
time timeEnd
計算程式的執行時間
可以將成對的console.time()和console.timeEnd()之間程式碼的執行時間輸出到控制檯上
console.time('計時器');
for (var i = 0; i < 1000; i++) {
for (var j = 0; j < 1000; j++) {}
}
console.timeEnd('計時器');
以上程式碼計算console.time('計時器');和console.timeEnd('計時器');之間的程式碼塊所需要的事件。
profile
使用console測試程式效能
開發中,我們常常要評估段程式碼或是某個函式的效能。在函式中手動列印時間固然可以,但顯得不夠靈活而且有誤差。藉助控制檯以及console.profile()方法我們可以很方便地監控執行效能。
function parent() {
for (var i = 0; i < 10000; i++) {
childA()
}
}
function childA(j) {
for (var i = 0; i < j; i++) {}
}
console.profile('效能分析');
parent();
console.profileEnd();
上述程式碼計算console.profile('效能分析');和console.profileEnd();之間,程式碼塊中涉及的函式的執行效率。
現在說回筆試題目
題目考察應聘者對console.time的瞭解和js單執行緒的理解。
console.time()語句和console.timeEnd()語句是用來對程式的執行進行計時的。
setTimeout()接受兩個引數,第一個是回撥函式,第二個是推遲執行的毫秒數。setTimeout()只是將事件插入了"任務佇列",必須等到當前程式碼(執行棧)執行完,主執行緒才會去執行它指定的回撥函式。
因為f1和f2被都setTimeout事先設定的定時器裝到一個事件佇列裡面。本來 f1應該在100ms後就要執行了,但是因為waitForMs佔用了執行緒,而執行JavaScript是單執行緒的,所以就沒辦法在100ms後執行那個 f1,所以需要等500ms等waitForMs執行完,然後在執行f1和f2,這時候f1和f2就幾乎同時執行了。
相關推薦
使用console進行效能測試和計算程式碼執行時間
對於前端開發人員,在開發過程中經常需要監控某些表示式或變數的值,如果使用用 debugger 會顯得過於笨重,最常用的方法是會將值輸出到控制檯上方便除錯。 最常用的語句就是console.log(expression)了。 從早前一道阿里實習生招聘筆試題目入手
使用console進行 效能測試 和 計算程式碼執行時間
對於前端開發人員,在開發過程中經常需要監控某些表示式或變數的值,如果使用用 debugger 會顯得過於笨重,最常用的方法是會將值輸出到控制檯上方便除錯。 最常用的語句就是console.log(expression)了。 從早前一道阿里實習生招聘筆試題目入手: function f1() {
python+opencv計算程式碼執行時間:time庫和opencv自帶方法getTickCount
import cv2 import time ############################## 利用opencv的兩個函式進行時間耗費計算 # cv2.getTickCount()記錄當前
js 使用console計算程式碼執行時間
需求 如果學習前端一定時間以後,就會考慮效能方面的問題。那麼問題來了,我們怎麼計算出一段程式碼的執行時間呢? 使用console.log配合Date物件計算 比如,我們計算sort方法排序十萬個隨機陣列成的陣列需要用多長時間的話,可以這麼寫:
一些巨集替換用法,使程式碼更加精煉。總結了兩個,一個foreach,用來c++容器遍歷,一個計算程式碼執行時間的。
一:#ifndef foreach #define foreach(container,it) \ for(typeof((container).begin()) it = (container).begin();it != (container).end() ;++it) #endif
StopWatch計算程式碼執行時間
StopWatch sw = new StopWatch(); sw.start("任意取名1"); 要計算的操作程式碼1 sw.stop(); System.out.println(sw.prettyPrin
python計算程式碼執行時間的裝飾器
import time def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, **kwargs) t2 =
C#效能測試垃圾回收與執行時間幫助
internal sealed class OperationTimer : IDisposable { private Stopwatch m_stopwatch; private string m_text;
C#下的時間測試(用於計算方法執行時間)
image sub [] 圖片 display nbsp mes during code 1 public class Timing 2 { 3 private TimeSpan m_StartTime; 4 5
PHP 計算程式碼執行所佔記憶體和時間
PHP 計算程式碼執行所佔記憶體和時間 在PHP開發過程中,寫出高質量的程式碼是很重要的,除了程式碼必須規範之外,效能也是不可忽視的一方面,那麼如果檢驗一段程式碼是否高效呢,可通過以下一段php程式碼來粗略檢測 1 header("Content-type: text/html; charset=
使用Jenkins+Sonarqueb進行自動化測試和程式碼質量檢測
簡介 Jenkins Jenkins是一款開源的持續整合工具,它的特點:易於安裝、易於配置、可擴充套件(自己開發外掛),並且它擁有數以百計的成熟外掛,這種外掛式的特點提供可做任何事情的可能。 Sonarqube SonarQube 是一個用於程式碼質量管理的開源平
分別利用timeit和time模組測試python程式碼執行時間
在python中,當我們想測試一段程式碼的執行時間時,可以利用python的timeit模組和time模組。這兩個模組在功能上都可以實現對程式碼執行時間的計算,但是本文推薦使用的是timeit模組,因為其是專門用來測試程式碼執行時間的,有一些靈活的方法,並且相對
(轉)使用CUnit進行單元測試和覆蓋率統計
CUnit安裝 如果能聯網的話,直接 yum install CUnit-devel.x86_64 就完成安裝了,注意要安裝devel版本,這樣才能找到標頭檔案。 編寫單元測試程式碼 CUnit的測試是單執行緒啟動,只能註冊一個Test Regis
對非同步處理的http介面進行效能測試
對非同步處理的http介面進行效能測試 以前對介面做效能測試,介面都是同步處理的,請求之後等待響應結果就知道處理結果了,這樣只要看這個介面是否異常,如果無異常無報錯記錄這個介面的響應時間、TPS等效能指標進行分析就可以了,最近在工作中遇到了非同步處理的介面,邏輯是隻要你請求引數全部合法,即返回成
java獲取某段程式碼執行時間和js獲取方法執行時間
java獲取某段程式碼執行時間和js獲取方法執行時間 java // 測試執行時間 long startTime = System.currentTimeMillis(); 程式碼段...... // 結束時間 long endTime = Syst
日誌中每段程式碼執行時間的和不等於整段程式碼執行的總時間
程式碼邏輯: def getInlink() A -> B -> C -> D 在tornado中呼
Linux應用程式開發筆記:測試程式碼執行時間
#include <stdio.h> #include <sys/times.h> #include <unistd.h> void main(void) { double duration; clock_t start,
Junit單元測試+aop+spring+執行緒池,在進行Junit測試時切面中執行緒池內呼叫的方法不執行
一、問題背景: 寫了一個切面,指向某service包下的所有類及方法,當該service包下方法被呼叫時切面執行,切面中用了執行緒池ExecutorService pool = Executors.newFixedThreadPool(5);執行緒池內呼叫了dao層的方法。 二、問題描述:單
4、如何使用siege工具進行效能測試
1、安裝siege wget http://download.joedog.org/siege/siege-latest.tar.gz tar -xvf siege-latest.tar.gz cd siege-4.0.4/ yum install gcc ./configure m
使用Jmeter進行介面測試和壓力測試的配置和使用
1. Jmeter簡介 Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。 JMeter 可以用於對伺服器、網路或物件模擬巨大的負載,來自不