Implemented QuART_tail, QuART_xtail, QuART_lil and refactored codebase - #21
Implemented QuART_tail, QuART_xtail, QuART_lil and refactored codebase#21cangokmen wants to merge 93 commits into
Conversation
…sibly the first one too
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… into cangokmen/new_tail_method
There was a problem hiding this comment.
Pull Request Overview
This PR introduces three new QuART variants (tail, xtail, lil) with fast-path insertion strategies, refactors the core ART implementation to support path printing/verification, and adds benchmark tooling along with documentation updates.
- Implemented QuART_tail, QuART_xtail, and QuART_lil insert methods in the QuARTVariants directory
- Extended ART core (
ART.h,ArtNode.h,ArtNodeNewMethods.cpp) to initialize and track fast-path (fp), printing, and verification - Added per-variant benchmark executables, an experiment script (
run_experiments.sh), updated CMake targets, and refreshedREADME.md
Reviewed Changes
Copilot reviewed 15 out of 17 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| run_experiments.sh | Script to automate running all variants over workloads |
| benchmarks/quart_*.cpp | Added benchmark drivers for xtail, tail, and lil variants |
| benchmarks/profile_inserts.cpp | Benchmark-only insert driver; loads sequential keys |
| benchmarks/art.cpp | Updated ART benchmark to default N=10M and removed verbose logic |
| CMakeLists.txt | New targets for all benchmarks; adjusted compiler flags |
| README.md | Documented new executables, script usage, and variant descriptions |
| QuARTVariants/*.h | Core implementations for QuART_tail, QuART_xtail, QuART_lil |
| ART.h, ArtNode.h | Initialized members for fast-path, added printTree & verifyTailPath |
| ArtNodeNewMethods.cpp | Implemented fast-path insertNodeX methods and debugging helpers |
Comments suppressed due to low confidence (3)
benchmarks/profile_inserts.cpp:39
- [nitpick] The comment above mentions changing the tree to ART::ART, but the code still instantiates QuART_xtail. Update the comment or the code to match the intended tree type.
ART::QuART_xtail* tree = new ART::QuART_xtail();
README.md:52
- [nitpick] The README still documents a '-v' flag for executables, but the benchmark code (e.g., art.cpp) no longer supports verbose mode. Remove or update references to '-v'.
- `-v`: Verbose mode (optional, default = false)
run_experiments.sh:1
- [nitpick] Add a shebang (e.g., #!/usr/bin/env bash) at the top of the script and ensure that variables like LOGDIR, RESULTS, SUFFIX, and REPEAT are defined or passed in before use.
for FILE in ../bods/workloads/workload_N*_K*_L*.bin; do
ramananeesh
left a comment
There was a problem hiding this comment.
please address the changes. Also, make sure you use .clang-format to format each of your files.
|
|
||
| #include "Helper.h" | ||
|
|
There was a problem hiding this comment.
get rid of this line. Make sure you are formatting the files using the clang-format file at the base directory in the repo
There was a problem hiding this comment.
I'll do the formatting on Thursday
| size_t& temp_fp_path_length, size_t depth_prev); | ||
| void eraseNode256(ART* tree, ArtNode** nodeRef, uint8_t keyByte); | ||
|
|
There was a problem hiding this comment.
I'll do the formatting on Thursday
| this->child[keyByte] = child; | ||
| } | ||
|
|
||
|
|
There was a problem hiding this comment.
I'll do the formatting on Thursday
There was a problem hiding this comment.
why do we have QuART_lil in this PR?
There was a problem hiding this comment.
I can put it in a seperate PR, it was easy to implement after having the tail implementation
There was a problem hiding this comment.
Always, keep PRs atomic so that it is easy to track changes. Coupling multiple features will only make the codebase messy if we need to rollback.
Also, since this was something @NoahP-K was trying to implement, move this to a separate branch and collaborate with him on this. We can make a new PR.
There was a problem hiding this comment.
we can use a single benchmark file that can compile different trees, instead of duplicated benchmark code.
There was a problem hiding this comment.
Should I do this in this PR or the next PR?
There was a problem hiding this comment.
Up to you. Technically, if these files are created in this PR, you can fix it here. However, if you feel that getting the rest of the features merged into main will be beneficial for the whole group, you can choose to do it in a separate PR as well.
58b6b20 to
73aea79
Compare
…lear. Also added comments to QuART_lil.h
fe7ee3a to
45350c3
Compare
Changed files: ART.h, ArtNode.h, .gitignore, CMakeLists.txt, README.md
Created files: ArtNodeNewMethods.cpp, QuARTVariants/QuART_tail.h, QuARTVariants/QuART_xtail.h, QuARTVariants/QuART_lil.h, benchmarks/profile_inserts.cpp, benchmarks/art.cpp, benchmarks/quart_tail.cpp, benchmarks/quart_xtail.cpp, benchmarks/quart_lil.cpp, run_experiments.sh