Repository navigation
Version 0.2.15: "Agility Comes from Solid Foundation; Project LCAC"
During previous week, the author was working on the solid benchmarking framework based on Criterion.rs.
Now it's working and I'm able to test various cases with a randomly generated dataset that resembles the real world data (by gathering statistic information from my about 35M size malware metadata collection using this crate).
As I'm also capable to test individual methods using various Criterion micro-benchmarks, I am allowed to test various changes to see what happens.
Custom CI on the author's environment reduces the chance of clearly broken version from being published. That was a shame that the author published three consecutive broken releases (v0.2.11-v0.2.13).
Anyway, the main focus on this version is to improve functions in the workflow.
That means, relatively easy-to-use functions but will be called many times depending on the workflow. Particularly, direct construction of FuzzyHashDualData from string can be useful on some batch processing uses.
- API
- Added
FuzzyHashDualData::from_bytes_with_last_index().
It was initially a side effect of the optimization below but it's also good for consistency.
- Added
- Performance
- Removed all
charhandlings for Base64 strings.
It significantly speeds upFuzzyHashData::to_string()even if theunsafefeature is disabled. - Optimized fuzzy hash normalization handlings.
Originally we usedu32to represent some array indices.
This is not semantically good and ... more of that, on recent processors, it's not fast (in contrary to the time the author implemented similar implementation to ssdeep and ffuzzy++).
This version now uses semantically correct and fasterusizefor such array indices.
Note that however,RollingHash::indexis kept as-is since replacing it resulted in some slowdown. - Optimized
FuzzyHashDualData::from_bytes()by direct construction.
Before this release, it constructed temporary raw fuzzy hash object and then compressed it.
Now, it parses the fuzzy hash string directly and compresses the block hashes using the intermediate data generated from the common parser (originally used only by regular fuzzy hashes:FuzzyHashData).
- Removed all
- Tests
- More simplification.
(removed more feature gates)
- More simplification.
- And other editorial fixes!
Crates.io: https://crates.io/crates/ffuzzy/0.2.15
Docs.rs: https://docs.rs/ffuzzy/0.2.15/ssdeep/
Full Changelog: v0.2.14...v0.2.15