Commit Graph
207 Commits
Author SHA1 Message Date
Sreedev Kodichath 3ca931fa8e [REF] core: replace streaming pipeline with staged batch pipeline
The deduplication core was a three-stage streaming producer/consumer
(scan -> group-by-size -> group-by-hash) orchestrated by a Server struct
that ran the stages concurrently on a threadpool. Coordination relied on
AtomicBool flags polled in busy-wait loops, an Arc<Mutex<Vec>> hand-off
queue, DashMap stores, and a per-file Arc<Mutex<FileState>>. Every stage
had to receive its own hand-cloned Arcs with ad-hoc names, and the
busy-wait branches burned a core spinning while waiting for the producer.

Replace it with a staged batch pipeline over owned collections:
pipeline::run(&Params) drives scan -> group_by_size -> group_by_hash in
sequence, with rayon supplying parallelism. With no shared mutable state
between stages, all the Arc plumbing, the AtomicBool coordination, the
Mutex queue, the per-file lock, server.rs, and the threadpool/dashmap
dependencies are gone. FileInfo becomes plain data and each stage is a
pure, independently testable function.

Behavior is preserved except for three authorized deviations: progress
spinners render sequentially rather than concurrently under -p; the
interactive empty-result message prints once instead of twice; and the
interactive "Duplicate Set X of Y" total now counts the confirmed
duplicate groups shown instead of the internal candidate-hash store size.

This lands as the foundation for the cache, CLI, and TUI work that follows.
2026-07-26 14:27:02 +02:00
sreedevk d102d92bfa cleanup clone littering in server.rs 2025-08-07 23:18:02 +00:00
sreedevk 68c2491fd0 added file store partitioning idea to readme. 2025-07-30 13:08:54 +00:00
sreedevk da24efbb36 count graphemes instead of chars in path length check 2025-07-30 10:47:58 +00:00
sreedevk 2191763b4d added potential optimizations to readme 2025-07-28 14:22:13 +00:00
sreedevk b84510f18e tree rendering ui improvements 2025-07-19 16:38:17 +00:00
Sreedev Kodichath bfb89edd16 Update README.md 2025-07-19 12:32:09 -04:00
sreedevk 21f0eb3cb0 all file type related filtering issues fixed 2025-07-19 16:26:12 +00:00
sreedevk f5d2d4e22c fix: single file hash groups printed to screen 2025-07-19 14:22:43 +00:00
sreedevk 360af25318 updated readme 2025-07-19 13:57:26 +00:00
sreedevk d06fe93171 fix pipeline breaks v0.3.1 2025-07-19 13:41:52 +00:00
sreedevk 6a24ca5ecf updated github release pipeline 2025-07-19 12:15:42 +00:00
sreedevk 6f23a51a53 created a automatic release ci pipeline 2025-07-19 12:00:25 +00:00
sreedevk 4894d1b4db minor ui improvements 2025-07-19 11:43:26 +00:00
sreedevk c0286b17cc fix: hash collision edge case 2025-07-19 11:33:52 +00:00
sreedevk e78dfc4211 updated dependencies 2025-07-19 02:01:15 +00:00
sreedevk 66f49a9aee benchmarks updated 2025-07-19 01:35:24 +00:00
sreedevk 711eb36fb9 output formatting and printing performance improvements 2025-07-19 01:26:46 +00:00
sreedevk 130a8f99ba partial hash page count increased 2025-07-18 11:25:37 +00:00
sreedevk d97af6b8f6 improved parallelization + updated benchmarks 2025-07-17 00:31:40 +00:00
sreedevk 90198502a3 added exclude file types.
updated documentation to include exclude file types.
2025-07-14 12:56:07 +00:00
sreedevk e1b81b9981 page hash aggregation method improvement 2025-07-14 01:02:14 +00:00
sreedevk 48e7c62036 added planned features 2025-07-14 00:23:16 +00:00
Sreedev Kodichath 58e33cc8da v0.3 (#61)
- [x] parallelization
    - [x] (scanning) + (processing sw & processing hw & formatting & printing)
- [x] reduce cloning values on the heap
- [x] add a partial hashing mode (--strict)
- [x] add unit tests
- [x] add silent mode
- [x] update documentation
- [x] remove color output
- [x] progress bar improvements
    - [x] use progress bar groups
- [x] remove broken json rendering
- [x] add benchmarks
2025-07-13 19:03:14 -04:00
sreedevk f9e86f8522 performance improvements 2025-07-12 00:24:25 +00:00
sreedev b4bf5d4fb3 docs updated 2024-07-05 04:34:12 +00:00
Sreedev Kodichath 028b868ea9 version 0.2.2 (#59)
* replaced fxhash with gxhash
0.2.2
2024-07-04 23:23:01 -04:00
Sreedev Kodichath a56d194ee3 Merge pull request #56 from sreedevk/feature/add-json-output
Version 0.2.1
0.2.1
2023-11-14 18:38:50 -05:00
sreedev 080cd791dc removed early return 2023-11-14 18:37:48 -05:00
sreedev b16236763c updated readme + version number 2023-11-14 18:36:27 -05:00
sreedev 3e407f69c8 added json output for further processing using other tools 2023-11-14 18:33:40 -05:00
Sreedev Kodichath 7d386c9420 Merge pull request #54 from sreedevk/distribution-improvements
Improve Distribution Methods & Create Compiled Binaries for More Platforms
2023-08-10 19:54:29 -04:00
sreedev 0dc681d4e7 added release yml 2023-08-10 19:51:57 -04:00
sreedev 442cb4b519 added cargo dist options 2023-08-10 13:05:29 -04:00
sreedev 8463e72f2d removed debug information from distrbution & release profiles to reduce binary size 2023-08-10 12:59:07 -04:00
sreedev 05c95bb67a added roadmap to readme 2023-08-02 09:41:15 -04:00
Sreedev Kodichath 062d44acd9 Merge pull request #53 from sreedevk/v0.2.0
v0.2.0  Architecture Improvements
0.2.0
2023-07-17 18:17:57 -04:00
sreedev ee6655de9b removed examples 2023-07-17 18:14:13 -04:00
sreedev ffa5295598 clippy 2023-07-17 14:40:10 -04:00
sreedev 6be8596992 restored interactive mode 2023-07-17 14:34:42 -04:00
sreedev a40f251e30 subtract overflow issue fixed 2023-07-17 14:19:57 -04:00
sreedev 02d05172da minsize issues fixed 2023-07-17 14:13:18 -04:00
sreedev dcc709a666 added filetype filter 2023-07-17 14:06:57 -04:00
sreedev e3d48ec505 v0.2.0 2023-07-17 13:59:58 -04:00
Sreedev Kodichath 7bd88f1642 Merge pull request #49 from sreedevk/development
Version 0.1.6
0.1.6
2023-02-06 09:37:01 -05:00
sreedev a65e22269c stabilize ui progress bars 2023-02-06 09:35:24 -05:00
sreedev 6e3fe4a37d cargo dist 2023-02-03 10:18:26 -05:00
sreedev eadffb5fea doc fixes 2023-01-27 09:56:10 -05:00
sreedev 5532ded331 updated benchmarks 2023-01-27 09:54:39 -05:00
sreedev 7119f019d3 benchmark updates 2023-01-27 09:52:14 -05:00