3 ms·
Node.js has a decent JIT, or so I've heard. I have experience with the HotSpot JVM. For the JVM this code would absolutely stop allocating on the heap past 10k
by xmcqdpt2 3y ago
Node.js has a decent JIT, or so I've heard. I have experience with the HotSpot JVM. For the JVM this code would absolutely stop allocating on the heap past 10k iterations of the loop. "Split a string then grab the parts in a hot loop" is ground stakes for JIT compilers.
If they are seeing any GC activity once the loop gets hot, something else is going very wrong.
- disgruntledphd2 3y agoYeah but if you're appending in a loop you'll need to allocate memory every time, right? Can a JIT avoid or rewrite this?
- xmcqdpt2 3y agoYep the Hotspot JIT will absolutely allocate on the stack and reuse memory allocations inside loops. It also has escape analysis and it will detect you don't need the array of strings after the iteration. In that case it usually just allocates the strings directly at their final locations on the record object.
- disgruntledphd2 3y agoWow, that's super cool. Almost makes me wish i did stuff on the JVM (but until someone rewrites LAPACK for it, that seems unlikely).