diff options
author | Michael <mike.harris@cerner.com> | 2019-10-24 09:14:33 -0500 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2019-10-24 22:14:33 +0800 |
commit | 9fe267ffcfa06545223160cdb8c35cd91163730e (patch) | |
tree | 4ddcf2eddd0c2b6b3533c17b99f7a9fff6db4bad /lib.go | |
parent | e7581ebf3e14f096b6e2d56ed34d381b4af6d310 (diff) |
Pre-allocate some memory when reading files (#510)
Diffstat (limited to 'lib.go')
-rw-r--r-- | lib.go | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -22,14 +22,12 @@ import ( // ReadZipReader can be used to read an XLSX in memory without touching the // filesystem. func ReadZipReader(r *zip.Reader) (map[string][]byte, int, error) { - fileList := make(map[string][]byte) + fileList := make(map[string][]byte, len(r.File)) worksheets := 0 for _, v := range r.File { fileList[v.Name] = readFile(v) - if len(v.Name) > 18 { - if v.Name[0:19] == "xl/worksheets/sheet" { - worksheets++ - } + if strings.HasPrefix(v.Name, "xl/worksheets/sheet") { + worksheets++ } } return fileList, worksheets, nil @@ -58,7 +56,8 @@ func readFile(file *zip.File) []byte { if err != nil { log.Fatal(err) } - buff := bytes.NewBuffer(nil) + dat := make([]byte, 0, file.FileInfo().Size()) + buff := bytes.NewBuffer(dat) _, _ = io.Copy(buff, rc) rc.Close() return buff.Bytes() |