|
|
@@ -99,7 +99,27 @@ func (sf *Packer) round() bool {
|
|
|
timeEnd := time.Now().Local().UnixMilli()
|
|
|
timeDelta := float32(timeEnd-timeBeg) / 1000
|
|
|
sf.timeTotal += timeDelta
|
|
|
- ratio := (float32(len(sf.binData)) - float32(sf.originSize)) / float32(sf.originSize) * 100
|
|
|
+ binOrigin := sf.originSize * 8
|
|
|
+ multFactor := 8
|
|
|
+ lenDict := sf.dictKeys.Len()
|
|
|
+ switch {
|
|
|
+ case lenDict < 256:
|
|
|
+ multFactor = 8
|
|
|
+ case 256 <= lenDict && lenDict < 512:
|
|
|
+ multFactor = 9
|
|
|
+ case 512 <= lenDict && lenDict < 1024:
|
|
|
+ multFactor = 10
|
|
|
+ case 1024 <= lenDict && lenDict < 2048:
|
|
|
+ multFactor = 11
|
|
|
+ case 2048 <= lenDict && lenDict < 4096:
|
|
|
+ multFactor = 12
|
|
|
+ case 4096 <= lenDict && lenDict < 8200:
|
|
|
+ multFactor = 13
|
|
|
+ default:
|
|
|
+ multFactor = 14
|
|
|
+ }
|
|
|
+ binPack := len(sf.binData) * multFactor
|
|
|
+ ratio := (float32(binPack) - float32(binOrigin)) / float32(binOrigin) * 100
|
|
|
log.Printf("Packer.Round(): timeTotal=%0.2fsec, timeRound=%0.2fsec, ration=%0.2f%%, totalChange=%v\n\n",
|
|
|
sf.timeTotal,
|
|
|
timeDelta,
|