Ada banyak cara untuk mendapatkan cap waktu di nodeJs, seperti:
1. Tanggal baru (). GetTime ()
2. Date.Now ()
3. Proses.UPTIME ()
4. Process.hrtime ()
Jika Anda ingin mendapatkan cap waktu, Anda dapat menggunakan metode ini. Jadi apa perbedaan antara metode ini?
Tanggal baru (). GetTime () dan Date.Now ()
Metode -metode ini melalui jumlah milidetik dari lingkungan yang menjalankan lingkungan di simpul. Efek dari metode penulisan Tanggal +Baru () sama dengan efek tanggal baru (). GetTime () .
Dalam skenario di mana cap waktu sering digunakan, Anda perlu memperhatikan kinerja metode. Di antara metode ini, Date.Now () memiliki kinerja terbaik. Anda dapat mengujinya dengan kode kecil:
var t1 = tanggal baru (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; untuk (i = 0; i <count; i ++) {t2 = tanggal baru (). getTime (); interval = (t2 - t1);} interval = (t2 - t1); console.log ('【tanggal baru (). getTime ()】 interval:', interval); t1 = tanggal baru (). getTime (); untuk (i = 0; i <count; i ++) {t2 =+tanggal baru; interval = (t2 - t1);} interval = (t2 - t1); console.log ('【+tanggal baru】 interval:', interval); t1 = tanggal baru (). GetTime (); untuk (i = 0; i <count; i ++) {t2 = tanggal.nownow (); interval = (t2 - t1);} interval = (t2 - t1); console.log ('【date.now ()】 interval:', interval);Hasil output:
【Tanggal baru (). GetTime ()】 Interval: 1583
【+Tanggal Baru】 Interval: 2189
【Date.Now ()】 Interval: 891
Jika Anda hanya mendapatkan cap waktu, maka menggunakan Date.Now () adalah cara terbaik untuk melakukannya, tetapi jika Anda ingin menghitung perbedaan waktu, metode ini akan memiliki beberapa masalah: kadang -kadang akan ada sedikit panggilan balik dalam sistem waktu dari lingkungan yang berjalan, sehingga perbedaan waktu yang diperoleh tidak akurat dan kadang -kadang beberapa bug akan dipicu.
Process.hrtime ()
Metode ini adalah untuk mendapatkan objek timestamp yang tepat berdasarkan titik waktu sebelumnya yang diambil dan waktu dari saat ini: [detik, nanoseconds]
> Process.hrtime () [3197146, 563552237]
Metode ini tidak ada hubungannya dengan waktu sistem, sehingga tidak akan terpengaruh oleh penyimpangan jam sistem, dan tidak akan ada bug ketika digunakan untuk menghitung perbedaan waktu.
Tapi, semuanya selalu ada - -
Bagaimana jika digunakan di tempat di mana ia sering disebut?
var t1 = tanggal baru (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; var hrTime1 = proses.hrtime (); var hrtime2 = hrtime1; t1 = new date (). getTime (); untuk (i = 0; i <count; i ++) {hrTime (); untuk (i = 0; i <count; i ++) {hrtime (). Date (). GetTime (); interval = parseInt (hrtime2 [0] * 1e3 + hrtime2 [1] * 1e -6); console.log ('【jam waktu】 interval:', interval, t2 - t1); 【hrTime】interval: 6412 6413 Jika Anda ingat dengan benar, jumlah kreasi yang sama, tanggal.now () di atas adalah sekitar 900ms!
Process.hrtime () terlalu lambat! Lai Lai
Ternyata ketika nodeJS menangani waktu presisi tinggi, perhitungannya relatif rumit, menempati banyak sumber daya sistem, dan memiliki kecepatan lambat, sehingga metode ini tidak cocok untuk aplikasi frekuensi tinggi. Silakan lihat Proses.UPTIME () di bawah ini
Process.UPTIME ()
Fungsi ini menggunakan waktu lari startup NodeJS untuk mendapatkan cap waktu kedua, yang akurat untuk milidetik:
proses
Input: 6.419
Fungsi ini didasarkan pada waktu startup simpul dan tidak akan terpengaruh oleh penyimpangan jam sistem, dan cocok untuk menghitung perbedaan waktu.
Jadi bagaimana kinerja beberapa panggilan?
var t1 = tanggal baru (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; t1 = proses.Uptime ()*1000; untuk (i = 0; i <count; i ++) {t2 = process.uptime ()*1000; // interval = (t2 - t1);} interval = (t2 - t1); console.log ('【proses.Output: [Process.Uptime ()] Interval: 954
Dibandingkan dengan proses.hrtime (), itu menciptakan banyak kinerja ~
Jangan hitung begitu akurat, ini cepat!
Maka Anda perlu menghitung perbedaan waktu pada frekuensi tinggi!
Di atas adalah semua tentang nodeJs mendapatkan perbedaan antara cap waktu dan waktu. Saya harap ini akan membantu semua orang saat menggunakan nodeJs.