mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-29 13:49:10 +08:00
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
// Copyright 2017 Baliance. All rights reserved.
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"runtime/pprof"
|
|
"time"
|
|
|
|
"baliance.com/gooxml/spreadsheet"
|
|
)
|
|
|
|
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
if *cpuprofile != "" {
|
|
f, err := os.Create(*cpuprofile)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
pprof.StartCPUProfile(f)
|
|
defer pprof.StopCPUProfile()
|
|
}
|
|
|
|
start := time.Now()
|
|
ss := spreadsheet.New()
|
|
nRows := 30000
|
|
nCols := 100
|
|
sheet := ss.AddSheet()
|
|
|
|
// rows
|
|
for r := 0; r < nRows; r++ {
|
|
row := sheet.AddRow()
|
|
// and cells
|
|
for c := 0; c < nCols; c++ {
|
|
cell := row.AddCell()
|
|
cell.SetNumber(float64(r + c))
|
|
}
|
|
}
|
|
|
|
if err := ss.Validate(); err != nil {
|
|
log.Fatalf("error validating sheet: %s", err)
|
|
}
|
|
|
|
fmt.Printf("creating %d rows * %d cells took %s\n", nRows, nCols, time.Now().Sub(start))
|
|
ss.SaveToFile("lots-of-rows.xlsx")
|
|
|
|
start = time.Now()
|
|
fmt.Printf("saving took %s\n", time.Now().Sub(start))
|
|
|
|
start = time.Now()
|
|
_, err := spreadsheet.Open("lots-of-rows.xlsx")
|
|
if err != nil {
|
|
log.Fatalf("error opening sheet: %s", err)
|
|
}
|
|
fmt.Printf("reading took %s\n", time.Now().Sub(start))
|
|
}
|