This has nothing to do with JIT compiler, loops, multi-threading or BigInt. If this was a some quiz question it would test:
-Understating that every number in js implicitly is floating point number
-Knowing how floating point addition works and that (unlike addition of integers) it takes multiple hw level operations
To make this test fair for both one loop variant and two loops variant:
s = Date.now()
for(let i=0;i<1e10;i++) { i + 100 }
for(let i=1e10;i<2e10;i++) { i + 100 }
console.log(Date.now() - s)
s = Date.now()
for(let i=0;i<2e10;i++) { i + 100 }
console.log(Date.now() - s)
Now both variants work with exact same numbers and perform exact same floating point operations (time diff is consistently <20ms on my machine now, where it was 500-1500ms before)
This has nothing to do with JIT compiler, loops, multi-threading or BigInt. If this was a some quiz question it would test:
-Understating that every number in js implicitly is floating point number
-Knowing how floating point addition works and that (unlike addition of integers) it takes multiple hw level operations
Addition_and_subtraction
To make this test fair for both one loop variant and two loops variant:
Now both variants work with exact same numbers and perform exact same floating point operations (time diff is consistently <20ms on my machine now, where it was 500-1500ms before)
TLDR: floating point
Thanks man, it took me a while to understand. I think this might be the best answer.