Вызов OS. Статистика как sayed @shebaw (по крайней мере, в UNIX ОС) более эффективна, вызовите stat() is a Unix system call that returns file attributes about an inode
, и не необходимо для контакта с открытым файла.
Здесь сравнительный тест
func GetFileSize1(filepath string) (int64, error) {
fi, err := os.Stat(filepath)
if err != nil {
return 0, err
}
// get the size
return fi.Size(), nil
}
func GetFileSize2(filepath string) (int64, error) {
f, err := os.Open(filepath)
if err != nil {
return 0, err
}
defer f.Close()
fi, err := f.Stat()
if err != nil {
return 0, err
}
return fi.Size(), nil
}
BenchmarkGetFileSize1-8 704618 1662 ns/op
BenchmarkGetFileSize2-8 199461 5668 ns/op