😄
【Go】gzip圧縮がどのくらい圧縮してるのか確かめる
jsonplaceholderのデータをhello.txtにコピペして確かめる。
main.go
package main
import (
"compress/gzip"
"fmt"
"io"
"os"
)
func main() {
compress()
beforeFile, err := os.Open("hello.txt")
if err != nil {
panic(err)
}
bInfo, err := beforeFile.Stat()
if err != nil {
panic(err)
}
bSize := bInfo.Size()
fmt.Printf("[before] %v byte\n", bSize)
afterFile, err := os.Open("hello.txt.gz")
if err != nil {
panic(err)
}
aInfo, err := afterFile.Stat()
if err != nil {
panic(err)
}
aSize := aInfo.Size()
fmt.Printf("[after] %v byte\n", aSize)
}
func compress() {
dist, err := os.Create("hello.txt.gz")
if err != nil {
panic(err)
}
defer dist.Close()
gw, err := gzip.NewWriterLevel(dist, gzip.BestCompression)
if err != nil {
panic(err)
}
defer gw.Close()
src, err := os.Open("hello.txt")
if err != nil {
panic(err)
}
defer src.Close()
if _, err := io.Copy(gw, src); err != nil {
panic(err)
}
}
/posts
# 1件
[before] 284 byte
[after] 207 byte
# 100件
[before] 25520 byte
[after] 6941 byte
/comments
[before] 145745 byte
[after] 39615 byte
/albums
[before] 7733 byte
[after] 1949 byte
/photos
# 1件
[before] 195 byte
[after] 154 byte
# 5000件
[before] 951472 byte
[after] 127632 byte
/todos
[before] 20311 byte
[after] 3835 byte
/users
[before] 4505 byte
[after] 1765 byte
参考
Discussion