Repository navigation
feat: add dependency graph scanner with benchmark #365
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
63 commits
Select commit
Hold shift + click to select a range
2169625
feat: add dependency graph scanner with include resolution and benchmark
16bit-ykiko 9a91658
fix: use putenv for Windows compat and system compiler for LLVM confi…
16bit-ykiko 1061b65
fix: init resource_dir in benchmark and use project toolchain for LLVM
16bit-ykiko 110dec6
fix: use absolute path for toolchain file in LLVM configure
16bit-ykiko 32cbf84
fix: use bash shell on all platforms, add scan error checking
16bit-ykiko 91a29b3
fix: use $(pwd) instead of github.workspace for toolchain path
16bit-ykiko 5cc8778
feat: add deco CLI options to scan_benchmark
16bit-ykiko 3d7e026
feat: add I/O statistics to dependency scan report
16bit-ykiko e713142
feat: add wall-clock phase breakdown to scan report
16bit-ykiko a93a9d1
perf: replace per-file stat() with directory listing cache
16bit-ykiko 4baf8f2
perf: parallelize Phase 2 with sharded dir listing cache
16bit-ykiko 86c88e7
refactor: revert Phase 2 to serial and simplify DirListingCache
16bit-ykiko e3275fa
perf: parallelize toolchain queries during config extraction
16bit-ykiko a3ca649
bench: add parser microbenchmark to scan_benchmark
16bit-ykiko b418768
fix: pre-warm all toolchain keys instead of driver+ext heuristic
16bit-ykiko 75a96d3
diag: add fine-grained timing to config extraction loop
16bit-ykiko 471552f
diag: reorder benchmark (scan first), add cache miss detection
16bit-ykiko 9e04aa1
diag: add context dedup diagnostic to benchmark
16bit-ykiko 19b27ed
fix: handle Windows path separator mismatch in CompilationInfo dedup
16bit-ykiko 29f7929
cleanup: simplify diagnostic output, reduce log verbosity
16bit-ykiko 6fbb4f4
style: apply clang-format
16bit-ykiko 1fb052e
style: format command.h
16bit-ykiko 008ea1d
fix: replace et::fs::sync with llvm::MemoryBuffer in scan worker
16bit-ykiko eeea0ad
perf: optimize scan with dir cache prefetch, reduced allocations
16bit-ykiko bc27ac3
perf: disable null terminator for mmap, reserve edge vectors
16bit-ykiko 9387f4e
perf: merge Phase 2+3, use stack-allocated SmallString for paths
16bit-ykiko 4a80dd4
perf: use DenseSet for scanned files, prefetch source dirs, reserve i…
16bit-ykiko 815ec43
style: apply clang-format
16bit-ykiko be96f75
perf: add include resolution cache, eliminate string copies in scan
16bit-ykiko 2ae2e25
perf: cache SearchConfig per CompilationInfo, skip re-parsing on warm…
16bit-ykiko bbd00c7
perf: skip toolchain pre-warm on warm runs
16bit-ykiko 82f197c
style: apply clang-format
16bit-ykiko cca5532
perf: eliminate path string copy in scan worker, fix deco include
16bit-ykiko 8007b71
perf: persist DirListingCache and include cache across scan calls (Sc…
16bit-ykiko a422d8e
perf: cache lexer scan results across scan calls (ScanCache::scan_res…
16bit-ykiko 59e816a
perf: cache context_groups, configs, and initial_wave in ScanCache
16bit-ykiko ae2c1fe
fix: null-terminate PathPool strings so resolve().data() is safe as c…
16bit-ykiko f0b0347
perf: cold-start-only benchmark with per-wave breakdown
16bit-ykiko 1ccfb56
perf: true cold start benchmark with multi-run statistics
16bit-ykiko 3838bb5
perf: force read() instead of mmap to benchmark true I/O vs lexer cost
16bit-ykiko a42d156
perf: overlap config extraction with Phase 1 + Phase 2 diagnostics
16bit-ykiko 74a84d1
Revert "perf: overlap config extraction with Phase 1 + Phase 2 diagno…
16bit-ykiko 329ef77
perf: optimize resolve_include — skip path construction on cache misses
16bit-ykiko f78248b
perf: pre-resolve DirListingCache pointers to eliminate StringMap loo…
16bit-ykiko c5ef15e
fix: handle multi-component include paths in DirListingCache lookup
16bit-ykiko f745ec9
perf: add first-component quick rejection for multi-component includes
16bit-ykiko 97f15bb
fix: normalize resolved include paths to deduplicate .. components
16bit-ykiko a0c56a2
refactor: extract ToolchainProvider from CompilationDatabase
16bit-ykiko e6e7021
refactor: extract SearchConfig into standalone module
16bit-ykiko f680447
fix: align header search directory priority with clang's InitHeaderSe…
16bit-ykiko f7e336e
style: clean up include_resolver.h and shorten test names
16bit-ykiko 1020993
docs: add TODOs for remaining clang header search gaps
16bit-ykiko 6c55172
feat: support -idirafter (After group) in SearchConfig
16bit-ykiko 4994d83
fix: update deco includes to use consolidated deco/deco.h
16bit-ykiko 3843ffc
refactor: move command-processing files to src/command/
16bit-ykiko f9048e4
fix: update deco Dispatcher API and fix include ordering
16bit-ykiko 809b9e1
fix: Windows CI — resource dir, JSON escaping, test paths
16bit-ykiko b730ccc
refactor: extract shared TempDir helper, remove P() macro
16bit-ykiko b518a6e
fix(tests): use CDB arguments array form to fix Windows backslash cor…
16bit-ykiko 33d6e91
fix(Windows): use Windows tokenizer for CDB command strings on Windows
16bit-ykiko 586525f
fix(tests): normalize path separators in TempDir::path()
16bit-ykiko 1507647
format the code
16bit-ykiko 6409878
fix: address CodeRabbit review findings
16bit-ykiko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| name: benchmark | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [main] | ||
|
|
||
| jobs: | ||
| benchmark: | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [ubuntu-24.04, macos-15, windows-2025] | ||
| runs-on: ${{ matrix.os }} | ||
| defaults: | ||
| run: | ||
| shell: bash | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
|
|
||
| # ── Build scan_benchmark ── | ||
|
|
||
| - uses: ./.github/actions/setup-pixi | ||
|
|
||
| - name: Build scan_benchmark | ||
| run: | | ||
| pixi run cmake-config RelWithDebInfo ON | ||
| cmake --build build/RelWithDebInfo --target scan_benchmark | ||
|
|
||
| # ── Clone LLVM and generate CDB ── | ||
|
|
||
| - name: Clone LLVM | ||
| run: git clone --depth 1 https://github.com/llvm/llvm-project.git | ||
|
|
||
| - name: Generate CDB | ||
| run: | | ||
| cmake -B llvm-build -G Ninja \ | ||
| -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||
| -DCMAKE_TOOLCHAIN_FILE="$(pwd)/cmake/toolchain.cmake" \ | ||
| -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;mlir;polly;flang;bolt" \ | ||
| -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \ | ||
| llvm-project/llvm | ||
|
|
||
| # ── Run benchmark ── | ||
|
|
||
| - name: Run benchmark | ||
| run: ./build/RelWithDebInfo/bin/scan_benchmark --runs 20 llvm-build/compile_commands.json | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.