Live data from Hacker News

Viewing profile — andyayers

andyayers

HN member
Joined
Wed, Jan 16, 2019, 8:49 AM UTC
HN karma
41
Public activity
20 items

About andyayers

I currently work on the .NET JIT.

Before that I worked on the Phoenix Compiler Framework at Microsoft and the High Level Optimizer at HP.

Recent public activity

  1. comment
    Comment #45522692

    Microsoft | Compiler Engineer, .NET JIT | C++, C# | Redmond WA / Other locations possible We are a small tight-knit team, happy to both teach and learn new ways of making code run …

  2. comment
    Comment #45498390

    .NET JIT developer here. What else would we call it? It is what it is. I believe there are some differences between what .NET does and what mainstream Java does. For instance, obje…

  3. comment
    Comment #45498282

    Sometimes, yes. Linq contains a goodly number of hand-crafted special-case enumerators for common collections, or collections with certain interfaces, or span projections that are …

  4. comment
    Comment #45200289

    Here is one that has some historical comparison, though it does not show perf on Framework, and no .NET 10 yet. https://endjin.com/blog/2024/11/how-dotnet-9-boosted-ais-dot...

  5. comment
    Comment #44053646

    HPUX compilers were doing this back in 1993.

  6. comment
    Comment #44047460

    Unfortunately, those improvements don't work for Linq. Some notes on why this is so here: https://github.com/dotnet/runtime/blob/main/docs/design/core...

  7. comment
    Comment #43538296

    There indeed is a regression if the method is only called a few times. But not if it is called frequently. With BenchmarkDotNet it may not be obvious which scenario you intend to m…

  8. comment
    Comment #43536917

    Long-running methods (like the one here) transition mid-execution to more optimized versions, via on-stack replacement (OSR), after roughly 50K iterations. So you end up running op…

  9. comment
    Comment #43245717

    For the .NET JIT, at least, speculation on types seems beneficial even if we're only right maybe 30% of the time. See eg https://github.com/dotnet/runtime/blob/main/docs/design/cor…

  10. comment
    Comment #41771691

    Or https://learn.microsoft.com/en-us/defender-endpoint/microsof... (DevDrive + Defender's "performance mode")

  11. comment
    Comment #41474981

    In .NET, even in optimized methods, there can be "untracked" lifetimes where a stack slot is reported live to GC throughout the extent of a method, so presumably these can lead to …

  12. comment
    Comment #41262528

    Not these days, but yes, years ago.

  13. comment
    Comment #41262203

    There are a few interesting places where Galois Theory touches on compilation/programming. Abstract interpretation models a potentially infinite set of program behaviors onto a sim…

  14. comment
    Comment #40133671

    Something closer to a "pure codegen/runtime" example perhaps: I have data showing Roslyn (the C# compiler, itself written in C#) speeds up between ~2x and ~3x running on .NET 8 vs …

  15. comment
    Comment #33536557

    Feel free to open an issue for this over at github.com/dotnet/runtime, if you have code you can share.

  16. comment
    Comment #33227548

    IIRC with .NET 7 we will be able to improve this as we can now dump the jit-generated assembly from official builds. .NET 7 will be officially released in a month or so. Currently …

  17. comment
    Comment #28215048

    Yes, we need to provide more guidance. For now, you might find more info by searching for COMPlus_TieredPGO. The DOTNET_ prefix is a recent addition.

  18. comment
    Comment #28214088

    Please let us know how well (or poorly) it works for you.

  19. comment
    Comment #24591563

    FWIW [peachpie]( https://www.peachpie.io/2020/09/peachpie-1-0-preview1.html ) is a fairly complete PHP stack running on top of .NET core, leveraging the .NET runtime and jit. It ca…

  20. comment
    Comment #20974222

    FWIW, MSVC has had this ability for a few years now. It helps with both normal compilation unit compiles and with link-time code generation. See for instance Bruce Dawson's notes: …