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) block: let decodedPng = decodePng(data) decodedImage = newImage(decodedPng) timeIt "pixie decode": discard decodePng(data) timeIt "pixie encode": discard encodePng(decodedPng) timeIt "pixie decode + alpha": discard newImage(decodePng(data)) timeIt "pixie encode + alpha": discard encodePng(decodedImage) block: timeIt "nimPNG decode": discard decodePNG32(data) let decoded = decodePNG32(data) timeIt "nimPNG encode": discard encodePNG32(decoded.data, decoded.width, decoded.height) 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 block: timeIt "cairo decode": discard imageSurfaceCreateFromPng(filePath) let decoded = imageSurfaceCreateFromPng(filePath) timeIt "cairo encode": var write: WriteFunc = proc(closure: pointer, data: cstring, len: int32): Status {.cdecl.} = StatusSuccess discard decoded.writeToPng(write, nil)