sync: 同步 v1.0.4 并脱敏配置与镜像
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package simcardquery
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
// buildRows 造 n 行「卡基础信息」级别的数据:22 列、字段长短接近真实。
|
||||
func buildRows(n int) [][]interface{} {
|
||||
rows := make([][]interface{}, n)
|
||||
for i := 0; i < n; i++ {
|
||||
id := strconv.Itoa(8986000000000000000 + i)
|
||||
rows[i] = []interface{}{
|
||||
id,
|
||||
"186" + strconv.Itoa(10000000+i),
|
||||
"46000" + strconv.Itoa(100000000+i),
|
||||
"86000000000000" + strconv.Itoa(i%100),
|
||||
float64(i % 5000),
|
||||
float64(5000 - i%5000),
|
||||
10240.0,
|
||||
2,
|
||||
4,
|
||||
"中国移动",
|
||||
"2026-01-01 00:00:00",
|
||||
"2025-12-01 00:00:00",
|
||||
"2027-12-31 23:59:59",
|
||||
"OUT20260101",
|
||||
"IN20251201",
|
||||
"标准套餐A",
|
||||
"示例企业",
|
||||
"备注内容示例",
|
||||
"",
|
||||
"成功",
|
||||
"",
|
||||
"",
|
||||
}
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
// TestExportWriteCost 量不同行数下「写 Excel + 生成文件」的真实耗时与体积。
|
||||
// 用来判断 20000 这个上限是否偏离实际能力,而不是拍脑袋。
|
||||
func TestExportWriteCost(t *testing.T) {
|
||||
for _, n := range []int{20000, 50000, 100000} {
|
||||
rows := buildRows(n)
|
||||
start := time.Now()
|
||||
|
||||
f := excelize.NewFile()
|
||||
sheet := f.GetSheetName(0)
|
||||
stream, err := f.NewStreamWriter(sheet)
|
||||
if err != nil {
|
||||
t.Fatalf("new stream writer: %v", err)
|
||||
}
|
||||
header := make([]interface{}, 22)
|
||||
for i := range header {
|
||||
header[i] = "列" + strconv.Itoa(i)
|
||||
}
|
||||
if err = stream.SetRow("A1", header); err != nil {
|
||||
t.Fatalf("write header: %v", err)
|
||||
}
|
||||
for i, row := range rows {
|
||||
cell, _ := excelize.CoordinatesToCellName(1, i+2)
|
||||
if err = stream.SetRow(cell, row); err != nil {
|
||||
t.Fatalf("write row %d: %v", i, err)
|
||||
}
|
||||
}
|
||||
if err = stream.Flush(); err != nil {
|
||||
t.Fatalf("flush: %v", err)
|
||||
}
|
||||
buf, err := f.WriteToBuffer()
|
||||
if err != nil {
|
||||
t.Fatalf("write to buffer: %v", err)
|
||||
}
|
||||
_ = f.Close()
|
||||
|
||||
elapsed := time.Since(start)
|
||||
t.Logf("rows=%6d write=%8.2fs size=%6.1fMB", n, elapsed.Seconds(), float64(buf.Len())/(1<<20))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user