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