Yesterday I reached performance parity with souffle's datalog compiler on my tests, I was holding out this post in hopes that I would be able to beat it, and I managed to do so. My implementation may be faster overall since I only handle EAV form, but I won't claim it is when I haven't tested all different possible workloads (which can be a lot) in which souffle's compiler will beat it but these benchs were representative of the loads I expect.
So far I can only think of a couple more improvements I could do to get better performance:
- Introduce some sort of sort of pgo. Right now I decide the order in which coditions are solved based on the size of the first query, but it may be better to profile it since that way I could avoid building some additional indices and save bandwidth there.
- Shrink the size of the different entities and values encoding down from 25 bits to 18 (this would be a really nice speed boost but I don't know if I can do this yet).
- I have this idea to make resizing of hashtables faster at the cost of making probing slightly slower, but since it would change significantly the hashes It'd be hard to empirically measure if there have been any measurable, reliable gains or not.
I also started reading the #gamewriting #kaleidoscope, It's a very interesting book, and I'm sure somewhere inside I can get an actual tip to execute on what I have in mind. I already talked in the past about how I want quests to work, I also mentioned I have a vague idea of how I will workaround my limitations to implement proper chat and instead go with canned phrases. But I have no idea how to execute the writing I'm thinking of, the closest reference I know of would be something like Magicka, or Bastion. I've been sharing my thoughts of the different chapters I've read elsewhere, because I'd like to focus here on my daily progress, but I'll eventually mention if I find what I'm looking for and whether I can recommend the book to non-writers or not.
#woao #programming #coding #gamedev #indiedev #langdev








