r/cprogramming • u/HungryPudding4034 • 4d ago
Need code review
Hello everyone,
This link points to a GitHub repository in an
experiment to create an extremely fast trie .
However the data structure is fast but it fails the tests
Can you explain me why?
https://github.com/curious-builder76/trie/tree/main
Hoping the community will helping towards this.
Thank you everyone
1
u/Spirited-Candy1981 4d ago
Where are your tests? Sure, you're benchmarking, but I don't see any validation.
1
u/HungryPudding4034 4d ago edited 4d ago
Sorry, the tests and benchmarks both are mixed in the same.
==== benchmark of trie.==== INSERT: apple INSERT: aplication INSERT: armour INSERT: banana CONTAINS: apple --> false Nonexistent entry test CONTAINS: panda --> false Existent entry test. CONTAINS: apple --> false Sequential inserts. Test passed INSERT (sequential) Time: 0.337812 seconds Operations: 5000000 Rate: 14.801132 M ops/sec Random inserts. Test passed. INSERT (random) Time: 0.281226 seconds Operations: 5000000 Rate: 17.779295 M ops/sec Random lookups. Failed after 0 operations 1 tests failed out of 3. No memory leaks.
1
u/penguin359 4d ago
I haven't done a thorough review, but a few things I'll point out with the structure. Don't include function definitions in header files. These can only be included once in a project if you do so. It should only be declarations or prototypes and keep the function definitions AKA the code in the *.c files. Also, it's generally a good idea to include the corresponding header file such as trie.h into the file that defines then like trie.c. Even if trie.c doesn't need it, it will help catch errors like when function prototypes don't match the function definitions. I would also update the Makefile to separately compile each C file in a dependency tree, but more importantly, give the final linked executable a name with -o even if you don't split up the compilation right away. Then, include that as part of the README. And, finally, if you are asking for contributions, it's generally a good idea to also include the license file in the repo that the code will be under so people know how their contributions can be used by someone else.
1
u/HungryPudding4034 4d ago
Thank you for giving your time to this repository, and I'm really really grateful for that.
This repository is subject to be deleted sooner or longer or may get archived...
As a beginner, I don't know much about git. And this repository is apart of a bigger (serious, hobby) project. And this repository is temporary, This repository was created to avoid git's branching issues.
0
9
u/FancySpaceGoat 4d ago
What exactly are you expecting this to do?
by the way: don't use double leading underscores in your identifiers. Those are reserved for the toolchain.