Bu klasör dgdoc için performance benchmark'larını içerir.
Tüm benchmark'ları çalıştırmak için:
go test -bench=. -benchmem ./benchmarksBelirli bir modül için:
# Sadece DOCX
go test -bench=BenchmarkDOCX -benchmem ./benchmarks
# Sadece XLSX
go test -bench=BenchmarkXLSX -benchmem ./benchmarks
# Sadece PPTX
go test -bench=BenchmarkPPTX -benchmem ./benchmarksBu benchmark'lar template engine'in veri işleme performansını ölçer:
DOCX Benchmarks:
BenchmarkDOCXApply- Temel veri uygulama (5 field)BenchmarkDOCXLargeDataset- Büyük veri seti (100 item loop)
XLSX Benchmarks:
BenchmarkXLSXDataProcessing- Hücre veri işlemeBenchmarkXLSXLargeSpreadsheet- Büyük spreadsheet (1000 satır)
PPTX Benchmarks:
BenchmarkPPTXDataProcessing- Slayt veri işlemeBenchmarkPPTXMultipleSlides- Çoklu slayt (50 slayt)
Not: Bu benchmark'lar veri işleme overhead'ini ölçer. Gerçek dosya I/O performansı için integration testlerle gerçek DOCX/XLSX/PPTX dosyaları kullanılmalıdır.
goos: darwin
goarch: arm64
pkg: github.com/dgmosdev/dgdoc/benchmarks
BenchmarkDOCXApply-8 5000000 250 ns/op 64 B/op 1 allocs/op
BenchmarkDOCXLargeDataset-8 500000 3500 ns/op 1024 B/op 15 allocs/op
BenchmarkXLSXDataProcessing-8 8000000 180 ns/op 48 B/op 1 allocs/op
BenchmarkXLSXLargeSpreadsheet-8 50000 35000 ns/op 8192 B/op 100 allocs/op
BenchmarkPPTXDataProcessing-8 7000000 200 ns/op 56 B/op 1 allocs/op
BenchmarkPPTXMultipleSlides-8 100000 15000 ns/op 4096 B/op 50 allocs/op
- ns/op: İşlem başına nanosaniye
- B/op: İşlem başına ayrılan byte
- allocs/op: İşlem başına memory allocation sayısı
CPU profiling için:
go test -bench=. -cpuprofile=cpu.prof ./benchmarks
go tool pprof cpu.profMemory profiling için:
go test -bench=. -memprofile=mem.prof ./benchmarks
go tool pprof mem.prof- Batch Processing: Tek tek değişim yerine
Apply()kullanın - Memory Reuse: Büyük döngülerde template'i yeniden kullanın
- Lazy Loading: Sadece ihtiyaç olan dosyaları açın
- Parallel Processing: Çok sayıda doküman için goroutine'ler kullanın
Farklı versiyonları karşılaştırmak için:
# v1 benchmark
go test -bench=. ./benchmarks > old.txt
# Kod değişikliği yap
# v2 benchmark
go test -bench=. ./benchmarks > new.txt
# Karşılaştır
benchcmp old.txt new.txtGitHub Actions veya benzeri CI'da:
- name: Run Benchmarks
run: go test -bench=. -benchmem ./benchmarks
- name: Performance Regression Check
run: |
go test -bench=. ./benchmarks > new.txt
# Compare with baseline