1. 16 Aug, 2021 1 commit
  2. 29 Jul, 2021 1 commit
  3. 03 Dec, 2019 1 commit
    • Eric Myhre's avatar
      I need to start admitting some research code. · ce917dd4
      Eric Myhre authored
      It's been, broadly speaking, "tricky" to plan out and design some of
      this project.  It's been doubly tricky to do it while understanding
      the holistic performance implications of the detailed choices.
      And while "premature optimization, evil", etcetera... I've gone
      through the performance rodeo in this vincinity at least once before
      (in the form of the refmt libraries): and resultingly, I'm going to
      claim a slightly-better-than-zero intuition for what's premature and
      what's utterly critical to keep track of as early as possible lest
      ye be doomed to a rewrite after learning things the hard way.
      
      (Arguably, half this codebase **is** the rewrite after learning things
      the hard way.  But I digress.)
      
      So: to combat this "trickiness", I've started writing a lot of
      "research" code and experimental benchmarks.
      This is still certainly fraught with peril -- in fact, one of the
      major things I've learned overall is just *how* dangerously misleading
      microbenchmarks can be (and to combat this, I've now started regularly
      reading the assembler output to make sure the optimizer is doing
      exactly what I think it is, neither more nor less) -- but it's much
      more informative than *not* doing it, and trying to suss out the mess
      later once you've built a whole system.
      
      And that's what it's time to start committing.
      (I should've started a while ago, honestly.)
      
      This "rsrch" directory will get some more content momentarily in
      coming commits, because there's a *lot* of stuff on my localhost.
      Some of it was so preliminary I'm not going to bother to preserve it;
      a lot of things are potentially pretty interesting, as educational
      and archeological material, if nothing else: those I'm going to commit.
      
      (It's possible all this will end up `git rm` again at some time in the
      future, too.  But honestly, it's darn hard to remember "why didn't
      you just do X?" sometimes.  Notes need to get committed *somewhere*,
      at least briefly enough that it's possible to dig them out again.)
      
      So!  To start: here are some research benchmarks into what strongly-
      natively-typed builders might look like in our codegen outputs.
      
      These are from about Oct 13th, as best I can suss localhost mtimes.
      I think most of these concepts are ones I'm (frustratingly) backing
      away from now, because I've learned a *lot* more about performance
      in the meanwhile, and I don't think these are gonna do well.
      But the worked exploration into ergonomics is still potentially
      interesting and worth review!
      Signed-off-by: default avatarEric Myhre <hash@exultant.us>
      ce917dd4