diff options
author | Colin Cross <ccross@android.com> | 2023-10-26 14:02:58 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2023-10-31 20:24:35 +0000 |
commit | 098c09334fefc9e061d061ec5cb491b4bbc83a4f (patch) | |
tree | 25f74702449fdacdadd6c7702ff874e550c26831 | |
parent | 0065131f509861c317111a6e59adfb18f503b9d9 (diff) | |
download | blueprint-098c09334fefc9e061d061ec5cb491b4bbc83a4f.tar.gz |
Remove unnecessary locking in fs
osFs.acquire and osFs.release are surprisingly expensive, using a
combined 345.7s of runtime in an AOSP aosp_cf_x86_64_phone-userdebug
build. They are used to ensure we don't use too many simultaneous
open files, but many of the functions they are called from don't
actually open a file. Remove them from all the stat-based functions
(Exists, IsDir, IsSymlink, Lstat, Stat), and from ReadLink. After
this change the time spent in acquire and release is effectively
zero.
Test: SOONG_PROFILE_CPU=/tmp/cpu.pprof m nothing
Change-Id: Ie5e22e33c61794354821f05ab79ceb4efc3b276c
-rw-r--r-- | pathtools/fs.go | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/pathtools/fs.go b/pathtools/fs.go index b959289..25e295f 100644 --- a/pathtools/fs.go +++ b/pathtools/fs.go @@ -204,8 +204,6 @@ func (fs *osFs) Open(name string) (ReaderAtSeekerCloser, error) { } func (fs *osFs) Exists(name string) (bool, bool, error) { - fs.acquire() - defer fs.release() stat, err := os.Stat(fs.toAbs(name)) if err == nil { return true, stat.IsDir(), nil @@ -217,8 +215,6 @@ func (fs *osFs) Exists(name string) (bool, bool, error) { } func (fs *osFs) IsDir(name string) (bool, error) { - fs.acquire() - defer fs.release() info, err := os.Stat(fs.toAbs(name)) if err != nil { return false, err @@ -227,8 +223,6 @@ func (fs *osFs) IsDir(name string) (bool, error) { } func (fs *osFs) IsSymlink(name string) (bool, error) { - fs.acquire() - defer fs.release() if info, err := os.Lstat(fs.toAbs(name)); err != nil { return false, err } else { @@ -249,14 +243,10 @@ func (fs *osFs) glob(pattern string) ([]string, error) { } func (fs *osFs) Lstat(path string) (stats os.FileInfo, err error) { - fs.acquire() - defer fs.release() return os.Lstat(fs.toAbs(path)) } func (fs *osFs) Stat(path string) (stats os.FileInfo, err error) { - fs.acquire() - defer fs.release() return os.Stat(fs.toAbs(path)) } @@ -284,8 +274,6 @@ func (fs *osFs) ReadDirNames(name string) ([]string, error) { } func (fs *osFs) Readlink(name string) (string, error) { - fs.acquire() - defer fs.release() return os.Readlink(fs.toAbs(name)) } |