- 16 Aug, 2021 1 commit
-
-
tavit ohanian authored
-
- 29 Jul, 2021 1 commit
-
-
tavit ohanian authored
-
- 03 Dec, 2019 1 commit
-
-
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: Eric Myhre <hash@exultant.us>
-