1. 程式人生 > >使用console進行 效能測試 和 計算程式碼執行時間

使用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 是一個用於程式碼質量管理的開源平

分別利用timeittime模組測試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 可以用於對伺服器、網路或物件模擬巨大的負載,來自不