There are other File implementations that could also benefit from the above, but
this is a start.
The primary motivation behind this is to allow fs.WalkDir use the native
implementation whenever possible, as that new function was added in Go 1.16 with
speed as its main selling point.
This commit also adds a benchmark for fs.WalkDir that, when compared to the main branch:
name old time/op new time/op delta
WalkDir-10 369µs ± 1% 196µs ± 3% -46.89% (p=0.029 n=4+4)
name old alloc/op new alloc/op delta
WalkDir-10 85.3kB ± 0% 40.2kB ± 0% -52.87% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
WalkDir-10 826 ± 0% 584 ± 0% -29.30% (p=0.029 n=4+4)
And implement
fs.ReadDirFile
forBasePathFile
.There are other
File
implementations that could also benefit from the above, but this is a start.The primary motivation behind this is to allow
fs.WalkDir
use the native implementation whenever possible, as that new function was added in Go 1.16 with speed as its main selling point.This commit also adds a benchmark for
fs.WalkDir
that, when compared to the main branch:Fixes #365