1
0
mirror of https://github.com/golang/go synced 2024-11-26 16:16:57 -07:00

os: avoid allocating a string for ReadDir skipped entries on Windows

Shave off a few allocations while reading a directory by checking
if the entry name is "." or ".." before allocating a string for it.

Change-Id: I05a87d7572bd4fc191db70aaa9e22a6102f68b4b
Reviewed-on: https://go-review.googlesource.com/c/go/+/520415
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
qmuntal 2023-08-17 10:26:36 +02:00 committed by Quim Muntal
parent e094e80f65
commit 50f2b7b764

View File

@ -153,10 +153,12 @@ func (file *File) readdir(n int, mode readdirMode) (names []string, dirents []Di
if islast {
d.bufp = 0
}
name := syscall.UTF16ToString(nameslice)
if name == "." || name == ".." { // Useless names
if (len(nameslice) == 1 && nameslice[0] == '.') ||
(len(nameslice) == 2 && nameslice[0] == '.' && nameslice[1] == '.') {
// Ignore "." and ".." and avoid allocating a string for them.
continue
}
name := syscall.UTF16ToString(nameslice)
if mode == readdirName {
names = append(names, name)
} else {