That's all fair enough. Shouldn't then constructing via some constructors be faster - where it doesn't require operating system call? Because I'm still seeing rather slow calls..
new Date(1591386221897) x 9,329,719 ops/sec ±2.66% (64 runs sampled) new Date(2019, 1, 1, 12, 0, 1, 1) x 2,636,300 ops/sec ±0.83% (65 runs sampled) Date.UTC(2019, 1, 1, 12, 0, 1, 1) x 11,741,842 ops/sec ±0.79% (65 runs sampled) Source: https://stackblitz.com/edit/js-dvq8ri On Friday, 5 June 2020 20:14:02 UTC+1, Jakob Kummerow wrote: > > Yes, getting the current time from the operating system is significantly > slower than allocating a simple JS object like [1, 2, 3]. That's not > going to change. > > As you can see, Date.now() is significantly faster than new Date(), so > that's preferable when performance/overhead matters. Other than that, I'd > simply recommend not to call either function overly often -- they have > millisecond resolution, so calling them very frequently just means that > you'll get the same values back repeatedly. > > In particular, I've seen folks try to get profiling data by calling > Date.now() before and after each function call. For small functions, > that's not a good idea, because you'll mostly be measuring the overhead of > the Date.now() calls themselves. When you need to profile, use a > profiler. (I've seen microbenchmarks where profiling revealed that half the > time was spent in Date.now() calls!) > > If you want to perform some cheap action repeatedly before a timer runs > out, it can help to have a double loop, e.g.: > > while (Date.now() < deadline) { > // Try a bunch of times, not just once. > for (let i = 0; i < 1000; i++) { > very_quick_thing(); > } > } > > Tune the 1000 in the example until you see that the for-loop takes about > a millisecond to finish (if it's accurate to an order of magnitude, i.e. > between 0.1 and 10ms, that's good enough, and gives you some robustness > towards hardware differences). > > > On Fri, Jun 5, 2020 at 9:02 PM Al Mo <almo...@gmail.com <javascript:>> > wrote: > >> [Warning. mere speculation] >> >> Perhaps it has to do with having to make a system call to get the current >> time. >> >> Alex. >> >> On Fri, Jun 5, 2020 at 1:57 PM Paweł Badeński <pawel....@gmail.com >> <javascript:>> wrote: >> >>> Hi, >>> >>> Wondering if someone can help with a bit of context to satisfy mu >>> curiosity! :D >>> >>> We are using Date.now & new Date quite a bit in our application >>> (financial domain). I run a few micro-benchmarks and was wondering why do >>> these report being relatively slow (as compared to construction of other >>> objects). In fact all Date methods seem rather slow. Am I having wrong >>> expectations for these to be faster? Are they as fast as they could be, or >>> is it that Date just never got enough love in terms of performance >>> optimizations? Really curious to get more color on this! >>> >>> Benchmarks: >>> >>> Date.now() x 9,454,436 ops/sec ±1.09% (65 runs sampled) >>> >>> new Date() x 5,594,688 ops/sec ±1.87% (64 runs sampled) >>> >>> [1, 2, 3] x 124,719,052 ops/sec ±0.90% (64 runs sampled) >>> >>> { a: 1, b: 2, c: 3 } x 112,368,878 ops/sec ±0.83% (65 runs sampled) >>> >>> new Object({ a: 1, b: 2, c: 3 }) x 32,547,566 ops/sec ±0.64% (64 runs >>> sampled) >>> >>> Source: https://stackblitz.com/edit/js-dvq8ri >>> >>> Thanks! >>> Pawel >>> >>> -- >>> -- >>> v8-users mailing list >>> v8-u...@googlegroups.com <javascript:> >>> http://groups.google.com/group/v8-users >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "v8-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to v8-u...@googlegroups.com <javascript:>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/v8-users/6d98a6eb-4961-42f3-9b7c-7c309b30ea17o%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/v8-users/6d98a6eb-4961-42f3-9b7c-7c309b30ea17o%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> -- >> v8-users mailing list >> v8-u...@googlegroups.com <javascript:> >> http://groups.google.com/group/v8-users >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-u...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-users/CABK7q5dOYX%2B5JoigNGh3ag4MG8Kcv3oF2vnb3ANyD-s0fjSgBA%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/v8-users/CABK7q5dOYX%2B5JoigNGh3ag4MG8Kcv3oF2vnb3ANyD-s0fjSgBA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/cce40a79-647c-4090-854b-86055b0aad05o%40googlegroups.com.