Commit Graph

6 Commits

Author SHA1 Message Date
Kayne Ruse
787a1cca84 Fixed table tests, ready for some benchmarking, see #131 2024-10-19 10:13:22 +11:00
Kayne Ruse
98ea0e5884 Reworking structures for easy testing, read more
I was reworking bits of the containers to address issue #131, then
realized that the table's tests depended on a specific initial size. I'm
too buggered to finish it tonight, so I'll fix it tomorrow.
2024-10-18 20:48:33 +11:00
Kayne Ruse
14653a303f Added 'Toy_String' to 'Toy_Value' structure, read more
To help with storing strings within tables, I've replaced the unused
'_padding' member of 'Toy_String' with 'cachedHash', which is set to
zero on string allocation.

The hash of a string isn't generated and stored until it's actually
needed, as the rope pattern means not every string needs a hash -
hopefully this will save unnecessarily wasted time.

When a hash of a string is needed, the hashing function first checks to
see if that string already has one, and if so, returns it. Again, less
time wasted.

When generating a new string hash, the hashing function takes the
string's type into account, as node-based strings first need their
contents assembled into a simple char buffer.

Other changes include:

* Changed 'TOY_VALUE_TO_*' to 'TOY_VALUE_FROM_*'
* Changed 'TOY_VALUE_IS_EQUAL' to 'TOY_VALUES_ARE_EQUAL'
* Added a missing '#pragma once' to 'toy_print.h'
2024-10-07 17:35:31 +11:00
Kayne Ruse
29f5647e31 Small tweak, read more
A table with 400 elements has a maximum PSL of 4.

This is only under test conditions, but WOW.
2024-10-04 17:10:23 +10:00
Kayne Ruse
196b5f86f1 Wrote tests for Toy_Table
I hope that's it, I don't wanna do that again XD
2024-10-04 16:50:54 +10:00
Kayne Ruse
5cf2e70b7d Implemented 'Toy_Table' hashtable with robin hood algorithm, untested 2024-10-03 16:33:47 +10:00