nodejs에서 타임 스탬프를 얻는 방법에는 다음과 같은 여러 가지가 있습니다.
1. New Date (). gettime ()
2. date.now ()
3. process.uptime ()
4. process.hrtime ()
타임 스탬프를 얻으려면이 방법을 사용할 수 있습니다. 그렇다면이 방법들 사이의 차이점은 무엇입니까?
새 날짜 (). gettime () 및 date.now ()
이러한 방법은 노드에서 실행되는 시스템 실행 환경의 밀리 초 수를 통해 이루어집니다. +new 날짜 () 쓰기 방법의 효과는 새로운 날짜 (). gettime () 의 효과와 동일합니다.
타임 스탬프가 자주 사용되는 시나리오에서는 방법의 성능에주의를 기울여야합니다. 이 방법 중 날짜 .now () 는 최상의 성능을 가지고 있습니다. 작은 코드로 테스트 할 수 있습니다.
var t1 = new date (). gettime (); var t2 = t1; var i = 0, count = 100000000, intermal = 0; for (i = 0; i <count; i ++) {t2 = new date (). gettime (); interval = (t2 -t1);} interval = (t2 -t1); console.log ( '【new date (). gettime ()】 interval :', intermal); t1 = new Date (). interval = (t2 -t1);} interval = (t2 -t1); console.log ( '【+new 날짜】 간격 :', 간격); t1 = new date (). gettime (); for (i = 0; i <count; i ++) {t2 = date.now (); interval = (t2 -t1);} interval = (t2 -t1); console.log ( '【date.now ()】 interval :', interval);출력 결과 :
【새 날짜 (). gettime ()】 간격 : 1583
【+새로운 날짜 date 간격 : 2189
date.now ()】 간격 : 891
타임 스탬프를 얻는 경우 날짜 를 사용하는 것이 가장 좋은 방법이지만 시차를 계산하려면 이러한 방법이 몇 가지 문제가됩니다. 때로는 실행 환경의 시스템 시간에 약간의 콜백이 있으므로 획득 한 시간 차이가 부정확하며 때로는 일부 버그가 트리거됩니다.
process.hrtime ()
이 방법은 과거의 시점과 현재부터 시간을 기준으로 정확한 타임 스탬프 객체를 얻는 것입니다. [초, 나노초]
> process.hrtime () [3197146, 563552237]
이 방법은 시스템 시간과 관련이 없으므로 시스템 클록 드리프트의 영향을받지 않으며 시차를 계산하는 데 사용될 때 버그가 없습니다.
그러나 모든 것이 항상 거기에 있습니다 - - -
그것이 자주 불리는 곳에서 사용되면 어떻게 될까요?
var t1 = new date (). gettime (); var t2 = t1; var i = 0, count = 100000000, intermal = 0; var hrtime1 = process.hrtime (); var hrtime2 = hrtime1; t1 = new date (); gettime (); 날짜 (). gettime (); intermal = parseint (hrtime2 [0] * 1e3 + hrtime2 [1] * 1e -6); console.log ( '【hrtime】 interval :', interval, t2- t1);
【hrTime】interval: 6412 6413 올바르게 기억한다면 같은 수의 창조물, 날짜 () 위의 날짜는 약 900ms입니다!
process.hrtime () 가 너무 느립니다! ! !
Nodejs가 고정판 시간을 처리 할 때 계산은 비교적 복잡하고 많은 시스템 리소스를 차지하며 속도가 느리기 때문에이 방법은 고주파 응용 프로그램에 적합하지 않습니다. 아래 Process.Uptime ()을 참조하십시오
process.uptime ()
이 기능은 NodeJS 스타트 업 실행 시간을 사용하여 두 번째 타임 스탬프를 얻습니다. 이는 밀리 초까지 정확합니다.
프로세스 .uptime
입력 : 6.419
이 기능은 노드 시작 시간을 기준으로하며 시스템 클록 드리프트의 영향을받지 않으며 시차를 계산하는 데 적합합니다.
그렇다면 여러 통화의 성능은 어떻습니까?
var t1 = new date (). gettime (); var t2 = t1; var i = 0, count = 100000000, interval = 0; t1 = process.uptime ()*1000; for (i = 0; i <count; i ++) {t2 = process.uptime ()*1000; // interval = (t2 -t1);} interval = (t2 -t1); console.log ( '【【process.uptime ()】 interval :', interval);출력 : [process.uptime ()] 간격 : 954
process.hrtime () 과 비교하여 많은 성능을 만듭니다 ~
정확하게 계산하지 마십시오. 빠릅니다!
그런 다음 고주파에서 시차를 계산해야합니다!
위의 것은 Nodejs가 타임 스탬프와 시간의 차이를 얻는 것에 관한 것입니다. Nodejs를 사용할 때 모든 사람에게 도움이되기를 바랍니다.