chai2010 / webp

WebP decoder and encoder for Go (Zero Dependencies).
http://godoc.org/github.com/chai2010/webp
BSD 3-Clause "New" or "Revised" License
512 stars 89 forks source link

为什么使用github.com/chai2010/webp的decode性能只有golang.org/x/image/webp的一半?是我使用方式不对吗? #66

Open liaosimin-heygen opened 6 months ago

liaosimin-heygen commented 6 months ago

`import ( "fmt" "image" "os" "time" "bytes"

    //"golang.org/x/image/webp"
    "github.com/chai2010/webp"

)

func webpToYuv(imgpath string) *image.Image { defer timeCost("webpToYuv:", time.Now())

    // 打开WebP文件
    start := time.Now()
    data,err:=os.ReadFile(imgpath)
    if err != nil {
            fmt.Println("open webp file failed:", err)
            return nil
    }
    fmt.Printf("读取文件 %s 耗时:%s\n", imgpath, time.Since(start))

    // 解码WebP文件
    start2 := time.Now()
    result, err := webp.Decode(bytes.NewReader(data))
    if err != nil {
            fmt.Println("decode webp file failed:", err)
            return nil
    }
    fmt.Printf("解码文件 %s 耗时:%s\n", imgpath, time.Since(start2))

    return &result

} ` 使用golang.org/x/image/webp的结果: webpToYuv: took 51.727646ms 读取文件 /mnt/realtime/josh_lite3_20230714/rgb/cluster_1/00814.webp 耗时:8.154499ms 解码文件 /mnt/realtime/josh_lite3_20230714/rgb/cluster_1/00814.webp 耗时:44.984073ms

使用github.com/chai2010/webp的结果: webpToYuv: took 105.325294ms 读取文件 /mnt/realtime/josh_lite3_20230714/rgb/cluster_1/00797.webp 耗时:1.161915ms 解码文件 /mnt/realtime/josh_lite3_20230714/rgb/cluster_1/00797.webp 耗时:99.458595ms