I think the biggest benefit isn’t so much ICs but speculative devirtualization leading to opportunistic inlining, which is really tough without a heat profile of the code (PGO or JIT)
-
-
Yeah that’s pretty much exactly the problem with ObjC. PGO is of course hard to do well, and people generally manually optimize out the dispatch in known hot paths anyway
1 reply 0 retweets 1 like -
Like, modern CPU’s BTB will mostly do a good job with virtual call overhead. (objc_msgSend is weird but I’m guessing it’s keyed off {pc,lr} on Apple’s chips or something to deal with that.) But inlining, that obviously opens up arbitrarily many optimizations.
3 replies 0 retweets 6 likes -
Which is probably why Microsoft invested so early in PGO. Just the ability to inline IUnknown methods (QueryInterface(), AddRef(), Release()) in COM-heavy code seems huge…
1 reply 0 retweets 0 likes -
How well does Microsoft's profiler-guided optimization work in practice? I know they've done a lot of it but I don't think I know anyone who's ever used it.
1 reply 0 retweets 0 likes -
We use it in Firefox. It’s worth a 10% perf boost or so as I recall
1 reply 0 retweets 1 like -
wait didn't u… write ur own programming language… specifically to write Firefox in
1 reply 0 retweets 0 likes -
This decision predates the use of Rust in Firefox, and there’s a whole lot of C++ still there :) Browser C++ code tends to use a lot more virtual dispatch than necessary (especially Gecko with its XPCOM, though this has improved). It’d probably help less in Rust.
2 replies 0 retweets 2 likes -
Replying to @pcwalton @mcclure111 and
But note that Rust has PGO too: https://doc.rust-lang.org/rustc/profile-guided-optimization.html … Not sure if we’ve turned Rust PGO on in Firefox yet, though.
1 reply 0 retweets 1 like -
Replying to @pcwalton @mcclure111 and
we turned rust pgo on a month ago and it had literally no effect on our performance metrics. there is a vague hunch that our profiling workloads don't really stretch the rust code's muscles, but it needs investigation.
1 reply 0 retweets 3 likes
Not surprised it had no effect.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.