News for hackers. Stuff that matters.
Re:Ian Lance Taylor's Response to “Go Is Google's Language” by grumpydba on Tuesday May 28, 2019 @01:08AM (#20027370)
You mention a lot of workarounds and knobs though. And the excessive use of layers of abstractions in the Java world is scary.
Re:Ian Lance Taylor's Response to “Go Is Google's Language” by apta on Tuesday May 28, 2019 @03:49PM (#20033664)
Large projects are complex. The JVM is designed to be a platform for developing general purpose software, which is why it provides options for tuning and whatnot. golang only comes with a low latency GC, which basically means you cannot use golang if you're looking for high throughput.
Re:Ian Lance Taylor's Response to “Go Is Google's Language” by grumpydba on Wednesday May 29, 2019 @08:35AM (#20039327)
> golang only comes with a low latency GC, which basically means you cannot use golang if you're looking for high throughput.

I you're looking for high throughput you just need to allocate less. Or use unsafe. And it's totally doable.

Re:Ian Lance Taylor's Response to “Go Is Google's Language” by apta on Wednesday May 29, 2019 @11:12AM (#20041107)
So you "only" have to make significant, error prone (by using unsafe) code changes as opposed to tuning a couple of parameters for the GC to account for a different workload? Again, this shows the superiority of the JVM here.

And the same approaches can be done in Java (e.g. self-managed off heap allocations), even more-so when they introduce value types.

Re:Ian Lance Taylor's Response to “Go Is Google's Language” by grumpydba on Wednesday May 29, 2019 @03:14PM (#20044176)
Object pools are really easy. Unsafe is only for extreme cases. Some cache libraries use it. You don't have to code it yourself. Yes this is better than relying on the end user/admin to tune things. It is more predictable.
Re:Ian Lance Taylor's Response to “Go Is Google's Language” by apta on Wednesday May 29, 2019 @11:45PM (#20048186)
Managing allocations is way more than just object pooling. The following code in golang allocates "n" on the heap:

    func main() {
        n := 1
        fmt.Println(n)
    }
Object pooling won't help here.

The new GCs on the JVM have very few parameters to tune, I think Shenandoah or ZGC have only two parameters to set up, can't get much simpler.

Re:Ian Lance Taylor's Response to “Go Is Google's Language” by grumpydba on Friday May 31, 2019 @06:30AM (#20059668)
You can pool n if it's on your hot path, can't you?

Escape analysis was just rewritten, and the objective is to handle this case more gracefully.