Dear golang-nuts, Summary: Would we be open to adding SROA as a compiler optimization to the go compiler?
I recently discovered via this rathole <https://github.com/bddicken/languages/pull/44#issuecomment-2508940093> that SROA is something that Clang does for the programming languages which compile with it. The implementation is here <https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/Scalar/SROA.cpp> . I also think that the lack of this compiler optimization is why there is a notable performance difference in the two benchmarks mentioned in https://github.com/golang/go/issues/49785 On the one hand, I have heard that the go team generally favors fast compilation times over compiler complexity and slower build times. On the other hand, I suspect that this optimization could really speed up a lot of go projects that exist in the wild. Before really being surprised by the differences between the C and go performance in the bddicken/languages <https://github.com/bddicken/languages>, I wouldn't have thought twice about writing a loop that aggregates values in a slice or an array in go. And, now that I've seen the performance difference, I'd much rather have the compiler optimize this for me than to go combing through my projects and manually allocating a local aggregation variable in the hopes of getting to use a register. At this point, I'm just taking a "temperature" check to see if folks would entertain the idea. I haven't really studied compilers, and would probably need some guidance to successfully contribute it to gc. But, I don't want to go through the learning and heavy-lifting if there's a major chance that the PR review would end up sounding like, "While it clearly produces more efficient binaries, we don't think it's worth the additional compilation time." Let me know if I should "dive in" or just remember to be very careful when aggregating operations in loops to a location in memory. Thanks, Pepper -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/CAMBVLZzRuziH1Eg7U%2BzxPTbsgv39w3C95eBZujk7NoBf8Jh3uA%40mail.gmail.com.