v1.0.0
This is the initial release of github.com/charlievieth/fastwalk.
commit 2eb2d27c5964e3c4fa3942da46ef364cd5b0b5bb Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Mar 2 22:14:37 2022 -0500
README: update and add examplescommit 0d4cb3ec332a612cba058e062576afe6f26a0c37 Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Mar 2 20:22:01 2022 -0500
darwin: implement readdir_r and closedir instead of linking to the stdlibcommit 1d9075e0c2737b7f25c87cc68448cee93d992aa8 Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Mar 2 20:15:58 2022 -0500
README: update with new Darwin perf numbers (now 2x faster)commit 5daeaefe4de0b5d6326db5e0ad31fc441e4470dd Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Mar 2 20:09:16 2022 -0500
Correctly follow symlinks, fix adapter funcs, fix Windows tests
This also tunes DefaultNumWorkers for macOS/Darwin which results in a
22% speed up:
```
name old time/op new time/op delta
FastWalk-10 16.8ms ± 1% 13.0ms ± 2% -22.20% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
FastWalk-10 2.13MB ± 0% 2.14MB ± 0% ~ (p=0.151 n=5+5)
name old allocs/op new allocs/op delta
FastWalk-10 37.7k ± 0% 37.7k ± 0% -0.01% (p=0.016 n=5+5)
```commit 8d5c8bb176ad3c2b21f4745552e1d2bc27f42664 Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Mar 2 11:51:36 2022 -0500
README: update and add examplecommit a206b5c1d125d835d95eac94b4f2f5ca2547f185 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 20:22:26 2022 -0500
export StatDirEntry
The StatDirEntry can be used to get the results of os.Stat for a
DirEntry.commit f0398be3e31c8886c590751f97c80a033bab6b85 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 19:52:28 2022 -0500
unix: uncomment line in testcommit cec940812f49f4dbca63780b342695eb7b987b73 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 19:41:52 2022 -0500
remove unused testdata foldercommit 77fe7e36142775a5819cf917b8a54cbd5ad5c554 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 19:35:38 2022 -0500
unix: consolidate unix (non-macOS) specific filescommit abcbda0cc7dbca69b65014bf7068841d8b6980d1 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 19:29:37 2022 -0500
linux: speed up direntNamlencommit 7c6327aeda6e935929589bb1b7cabc119dc091e0 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 17:14:37 2022 -0500
Use fs.DirEntry and fs.FileInfo instead of os.DirEntry and os.FileInfocommit 674cbf6f9c9a2d0f5ed507160e40bbb3d2f3a9ae Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 17:10:45 2022 -0500
darwin: improve readDir test coveragecommit 128e4e16de2aad67dc247ff809834e0eaae38032 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 16:49:57 2022 -0500
dirent: cache Stat results for portableDirentcommit a4a3f4b5731d72333d71a66add5e9492ad589683 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Feb 25 16:10:26 2022 -0500
tests: fix TestEntryFilter on Windowscommit a8a7f0d31e5168ff8aca27367e0aaf0b4fc87f7d Author: Charlie Vieth charlie.vieth@gmail.com Date: Thu Feb 24 22:35:39 2022 -0500
Add READMEcommit 1e61d290711c323688c085d19d9c5cdd9fda9639 Author: Charlie Vieth charlie.vieth@gmail.com Date: Thu Feb 24 20:44:39 2022 -0500
EntryFilter: use multiple entry stores to reduce lock contention
```
benchmark old ns/op new ns/op delta
BenchmarkEntryFilter_Seen-10 30.8 33.4 +8.41%
BenchmarkEntryFilter_Seen_Parallel-10 130 60.4 -53.58%
BenchmarkEntryFilter/MostlyHits-10 41.7 48.6 +16.51%
BenchmarkEntryFilter/MostlyHitsParallel-10 132 71.2 -45.89%
BenchmarkEntryFilter/HalfMisses-10 115 135 +17.54%
```commit 4e8a8c4dad36a9b436515a89cda458eb918dfe1f Author: Charlie Vieth charlie.vieth@gmail.com Date: Thu Feb 24 20:39:53 2022 -0500
Makefile: only run nogetdirentries test on darwincommit d9fb580c3cf6baac6da3a23db464cefde83ccfd7 Author: Charlie Vieth charlie.vieth@gmail.com Date: Thu Feb 24 20:38:39 2022 -0500
Makefile: fix bench_comp targetcommit 62ed6f45f1ba9de6c59f0fa80acdf837118ae7c6 Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Feb 23 13:32:23 2022 -0500
rename seen_* entry_filter_*commit 221012d0913d0671ae66a1872c5b54a68d731450 Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Feb 23 12:21:47 2022 -0500
darwin: fixup build tags on zsyscall_*getdirentries* filescommit a3a6465aade6d97e60949231ea5d535116cc6e1d Author: Charlie Vieth charlie.vieth@gmail.com Date: Wed Feb 23 12:19:32 2022 -0500
remove lstatDirent as it's no longer needed since we cache the resultcommit 2e6a1b8a1ce88e578279e6e631b2129f7144ec87 Author: Charlie Vieth charlie.vieth@gmail.com Date: Tue Feb 22 17:08:59 2022 -0500
Add Makefile and benchmark scriptcommit 2940440ff12b14e441bd8cc3b573cee1f0ab4c99 Author: Charlie Vieth charlie.vieth@gmail.com Date: Tue Feb 22 14:53:41 2022 -0500
benchmark fastwalk against filepath.WalkDir and godirwalk.Walk
Below results from a 2021 M1 MacBook Pro.
filepath vs. fastwalk:
```
name old time/op new time/op delta
WalkComparison-10 30.8ms ± 0% 17.4ms ± 1% -43.43% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
WalkComparison-10 4.33MB ± 0% 2.14MB ± 0% -50.64% (p=0.008 n=5+5)
name old allocs/op new allocs/op delta
WalkComparison-10 50.9k ± 0% 37.7k ± 0% -26.00% (p=0.008 n=5+5)
```
godirwalk vs. fastwalk:
```
name old time/op new time/op delta
WalkComparison-10 59.2ms ± 1% 17.4ms ± 1% -70.63% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
WalkComparison-10 25.2MB ± 0% 2.1MB ± 0% -91.54% (p=0.008 n=5+5)
name old allocs/op new allocs/op delta
WalkComparison-10 57.6k ± 0% 37.7k ± 0% -34.58% (p=0.016 n=4+5)
```commit 581a6f52dca33a561c3555f83fb0d71d99c78c67 Author: Charlie Vieth charlie.vieth@gmail.com Date: Tue Feb 22 14:19:40 2022 -0500
darwin: don't export Getdirentries functioncommit e64e8db1c4e593b87b8c8ec7718496ade521246a Author: Charlie Vieth charlie.vieth@gmail.com Date: Tue Feb 22 14:16:24 2022 -0500
DirEntry: cache results on unix and ensure fastwalk.DirEntry is always used
This commit changes the unix DirEntry implementation to cache the
results of Info() and Stat(). It also ensures that the fs.DirEntry
passed to WalkFunc is always a fastwalk.DirEntry, which has an extra
Stat() method.commit 69596e85cbfd84bf07af0c024437647227da95dd Author: Charlie Vieth charlie.vieth@gmail.com Date: Sat Jan 29 02:34:45 2022 -0500
fastwalk: skip ErrPermission test on Windows
TODO: create an applicable test for Windowscommit cffabdf172788163fa5ebd10af554ce454018d33 Author: Charlie Vieth charlie.vieth@gmail.com Date: Sat Jan 29 02:16:20 2022 -0500
github: remove go1.16 targetcommit 56652afaeea78457283884206afef54b093e674b Author: Charlie Vieth charlie.vieth@gmail.com Date: Sat Jan 29 02:14:16 2022 -0500
github: add workflows for Linux, macOS, and Windowscommit cecff903b4a3a69c0887c604ac751dad253a3f9d Author: Charlie Vieth charlie.vieth@gmail.com Date: Sat Jan 29 00:25:33 2022 -0500
add MIT LICENSE and reference Go's LICENSEcommit 5c62e678b7f2251924cddb2aa13a07c0eec95318 Author: Charlie Vieth charlie.vieth@gmail.com Date: Sat Jan 29 00:09:35 2022 -0500
darwin: use getdirentries64 for readDir
Use getdirentries64 for readDir since it reduces the number of syscalls.
Since getdirentries64 is deprecated and banned by the App Store the
'nogetdirentries' build tag can be used to omit its usage and linkage.commit 5843c3c19c5a63e08f212817dbca8784f1ab36d6 Author: Charlie Vieth charlie.vieth@gmail.com Date: Fri Jan 28 22:21:16 2022 -0500
convert Walk() to take a fs.WalkDirFunccommit 576d1db050296f6c662dffc546f5783581161f2f Author: Charlie Vieth charlie.vieth@gmail.com Date: Thu Jan 27 19:55:40 2022 -0500
initial commit