pixie/tests/benchmark_png.nim
2021-10-03 17:49:21 -05:00

61 lines
1.3 KiB
Nim

import benchy, cairo, nimPNG, pixie/fileformats/png, stb_image/read as stbi,
stb_image/write as stbr
let
filePath = "tests/fileformats/png/lenna.png"
data = readFile(filePath)
timeIt "pixie decode":
keep decodePngRaw(data)
timeIt "pixie encode":
let decoded = decodePngRaw(data)
keep encodePng(decoded).len
timeIt "pixie decode + alpha":
keep decodePng(data)
timeIt "pixie encode + alpha":
let decoded = decodePng(data)
keep encodePng(decoded).len
timeIt "nimPNG decode":
keep decodePNG32(data)
timeIt "nimPNG encode":
let decoded = decodePNG32(data)
keep encodePNG32(decoded.data, decoded.width, decoded.height).pixels.len
timeIt "stb_image decode":
var width, height, channels: int
keep loadFromMemory(
cast[seq[byte]](data),
width,
height,
channels,
stbi.RGBA
)
timeIt "stb_image encode":
var width, height, channels: int
let decoded = loadFromMemory(
cast[seq[byte]](data),
width,
height,
channels,
stbi.RGBA
)
keep writePNG(width, height, channels, decoded).len
timeIt "cairo decode":
keep imageSurfaceCreateFromPng(filePath)
timeIt "cairo encode":
let decoded = imageSurfaceCreateFromPng(filePath)
var write: WriteFunc =
proc(closure: pointer, data: cstring, len: int32): Status {.cdecl.} =
StatusSuccess
discard decoded.writeToPng(write, nil)