4 ms·
Excellent points. One of the emotional appeals of Go, to me, is the community behavior and mindset. Go code very often "feels" like a low level language, writte
by jakewins 10y ago
Excellent points. One of the emotional appeals of Go, to me, is the community behavior and mindset. Go code very often "feels" like a low level language, written by someone that was considerate of the underlying machine.
You're also hitting another nerve: The horrific world of allocation tracking in Java. While your case sounds like a legitimate thing, so many times I've been in that situation and been tricked by my tools to optimize the wrong path.
Most popular allocation tracking tools, like YourKit, turn off escape analysis. Obviously, when you do that, stupid things like boxed primitives will show up as your main sources of heap allocation even though Hotspot would stick those suckers on the stack in a heart beat.
Eg: Here's a program running without YourKit allocation tracking: https://twitter.com/jakewins/status/707759792547233792 https://twitter.com/jakewins/status/707759792547233792
And here's the same program with it on: https://twitter.com/jakewins/status/707754868497231872 https://twitter.com/jakewins/status/707754868497231872
Still makes me furious - what in the world am I supposed to do with an allocation tracking tool that creates millions of false positive allocations, drowning out the thing I care about? Gah.
- pjmlp 10y agoWhich actually could have been fixed since version 1.0, had the language designers added support for value types instead of trying to retrofit them into Java 10. I like the language, but it did a bit of left turn by not adopting the features of Oberon(-2), Modula-3, Component Pascal or Eiffel in regards to value types and native AOT compilation.