# Użyj wszystkich rdzeni CPU
redup scan . --parallel
# Ogranicz liczbę workerów
redup scan . --parallel --max-workers 4# Pomija sliding-window analizę linii
redup scan . --functions-only# Pierwsze skanowanie - pełne + zapis cache
redup scan . --incremental
# Kolejne skanowanie - pełne skanowanie z wykorzystaniem cache (szybciej)
redup scan . --incremental
# Tylko pliki zmienione względem gałęzi bazowej (git diff)
redup scan . --changed-only --base-ref origin/main --incrementalredup scan . --parallel --functions-only --incremental --min-lines 5[scan]
extensions = ".py" # Tylko Python
min_lines = 5 # Wyższy próg = mniej bloków
min_similarity = 0.90 # Wyższy próg = mniej porównań
include_tests = false
[lsh]
enabled = false # Wyłącz LSH (jest wolny)| Strategia | Projekt 100 plików | Projekt 1000 plików |
|---|---|---|
| Domyślnie | 2-5s | 30-60s |
| --functions-only | 1-2s | 10-20s |
| --parallel | 1-2s | 5-15s |
| --functions-only --parallel | 0.5-1s | 3-8s |
| --incremental (2nd run) | 0.1-0.5s | 0.5-2s |
- Scan Rate: ~3,000 lines/sec for Python projects (domyślnie)
- Scan Rate: ~10,000 lines/sec (z optymalizacjami)
- Memory Usage: Efficient block processing
-
String Operations (2.2s total)
str.join()calls: 2.18s (145K calls)- Line processing in sliding window extraction
-
AST Walking (1.5s total)
ast.walk(): 1.52s (352K calls)
-
LSH Near-Duplicate Detection (slow with datasketch)
- Wyłącz jeśli niepotrzebne:
enabled = falsew [lsh]
- Wyłącz jeśli niepotrzebne:
- ✅ Parallel scanning (
--parallel) - ✅ Incremental scanning (
--incremental) - nowość v0.3.7 - ✅ Hash cache module (
HashCacheclass) - ✅ Lazy tree-sitter loading
- ✅ Optimized file filtering with
lru_cache
# GitHub Actions example
- name: Cache reDUP
uses: actions/cache@v3
with:
path: .redup_cache.json
key: redup-${{ github.sha }}
restore-keys: redup-
- name: Run reDUP
run: |
pip install redup
redup scan . --incremental --functions-only --max-groups 10