The expanses of WolfWings' land
scratched on the wall for all to see


March 23rd, 2002
March 23rd, 2002
March 23rd, 2002
March 23rd, 2002
March 23rd, 2002

[User Picture]And on a totally different note... I've just finished writing most of what I think is, far and away the most impressive piece of code I've ever contemplated, let alone finished.

A hybrid wide-binary-tree tagged wildcard string matching system. Hand it 50000 strings to match again, INCLUDING wildcards, then hand it strings to match again as fast as you want. It works. It's not hybridized fully, so memory usage is a BITCH, but it WORKS! Hallelujah!

I'm happy, 12k string to match against, 100k strings to test entries they match against, and it worked flawlessly when I thought it would during the first 'heavy load' test. Only downside, and a known one with 'sparse but heavy' data. Memory usage sky-rockets when dealing with one-entry 'nodes' that just branch deeper with a single course of action. So, time to add the 'hybrid' component I built support for in already. Pack type-8 (OIOO, One In One Out, in binary. >^.^<) nodes in as full lines of text to compare against. Will remove about 85% of the used nodes. Might tail-optimize the nodes to remove zero-exit nodes in the case of one-exit ones, and trim another 5-10% off the node-count, so what took up 64MB of memory will only take up around 8MB or less. While still space-hungry, that's reasonable, and it's limited by my writing this fully cross-platform. (Read: Assuming all data types may be stored as 8 bits. So a void pointer may only store a 'value' of 0-255. On any 'sane' platform, it can actually store MUCH larger numbers, or be used to store multiple numbers. But this isn't sanity. This is cross-platform land. Check your sanity at the door. I'm pondering adding SMP/thread locking, and essentially turning it into a full-fledged database system in about 20k of commented source and about 6k of raw binary code. :-)3 commentsLeave a comment
?

Log in

No account? Create an account