[js] 소요시간 측정
January 31, 2019 - [js]
js 속도 튜닝이 필요할 경우 특별히 스크립트의 소요시간을 체크하고자 할 때 간단하게 사용할 수 있는 함수를 소개한다.
사용법
const timelog = require("./timelog")
timelog.start("sample task");
setTimeout(() => {
timelog.check("1st 작업")
}, 200)
setTimeout(() => {
timelog.check("2nd 작업")
}, 500)
setTimeout(() => {
timelog.check("3rd 작업")
}, 900)
실행 결과
[START#48 13:21:34:511] sample task
[CHECK#48 13:21:34:721 +210ms / +210ms] 1st 작업
[CHECK#48 13:21:35:024 +303ms / +513ms] 2nd 작업
[CHECK#48 13:21:35:424 +400ms / +913ms] 3rd 작업
timelog.js
const createTimelog = function () {
const newDate = function(){
let t = new Date()
let o = {
HH: String(t.getHours()).padStart(2, "0"),
mm: String(t.getMinutes()).padStart(2, "0"),
ss: String(t.getSeconds()).padStart(2, "0"),
SSS: String(t.getMilliseconds()).padStart(3, "0"),
time: t.getTime()
}
return o;
}
let time = [];
let seq = "#" + Math.floor(Math.random()*100)
let o = {
start: function (str) {
let t = newDate();
time = [t.time];
console.log(`[START${seq} ${t.HH}:${t.mm}:${t.ss}:${t.SSS}] ` + str)
},
check: function (str) {
let t = newDate();
time.push(t.time)
let diff = time[time.length - 1] - time[time.length - 2];
let total = time[time.length - 1] - time[0];
console.log(`[CHECK${seq} ${t.HH}:${t.mm}:${t.ss}:${t.SSS} +${diff}ms / +${total}ms] ` + str)
return diff;
}
};
return o;
}
const timelog = createTimelog();
timelog.new = createTimelog;
module.exports = timelog;
2가지 이상 작업단위에 대한 소요시간 체크
내부적인 단위업무에 대하여 별도로 시간을 체크하고자 할 경우에는 아래와 같이 객체를 새로 만들어서 사용할 수 있다.
const timelog = require("./timelog");
timelog.start("전체작업 시작")
let ta = timelog.new();
ta.start("A작업 시작"); // A작업 시간 별도 체크
// ~~ 중략 ~~
let tb = timelog.new();
tb.start("B작업 시작"); // B작업 시간 별도 체크
//~~ 중략 ~~
ta.check("A작업 끝")
//~~ 중략 ~~
tb.check("B작업 끝")
timelog.check("전체작업 끝")