60
задан 16 June 2013 в 17:03

1 ответ

Вызов 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
0
ответ дан 1 November 2019 в 09:41

Другие вопросы по тегам:

Похожие вопросы: