Use benchy for benchmarks.
This commit is contained in:
parent
7441ba4944
commit
ae0930ba8d
3 changed files with 44 additions and 190 deletions
|
@ -368,10 +368,8 @@ proc sharpOpacity*(image: Image) =
|
||||||
else:
|
else:
|
||||||
image.data[i] = rgba(255, 255, 255, 255)
|
image.data[i] = rgba(255, 255, 255, 255)
|
||||||
|
|
||||||
proc drawCorrect*(a: Image, b: Image, mat: Mat3, blendMode: BlendMode): Image =
|
proc drawCorrect*(a: Image, b: Image, mat: Mat3, blendMode: BlendMode) =
|
||||||
## Draws one image onto another using matrix with color blending.
|
## Draws one image onto another using matrix with color blending.
|
||||||
result = newImage(a.width, a.height)
|
|
||||||
|
|
||||||
var
|
var
|
||||||
matInv = mat.inverse()
|
matInv = mat.inverse()
|
||||||
# compute movement vectors
|
# compute movement vectors
|
||||||
|
@ -396,7 +394,7 @@ proc drawCorrect*(a: Image, b: Image, mat: Mat3, blendMode: BlendMode): Image =
|
||||||
var rgba = a.getRgbaUnsafe(x, y)
|
var rgba = a.getRgbaUnsafe(x, y)
|
||||||
let rgba2 = b.getRgbaSmooth(srcPos.x - h, srcPos.y - h)
|
let rgba2 = b.getRgbaSmooth(srcPos.x - h, srcPos.y - h)
|
||||||
rgba = blendMode.mix(rgba, rgba2)
|
rgba = blendMode.mix(rgba, rgba2)
|
||||||
result.setRgbaUnsafe(x, y, rgba)
|
a.setRgbaUnsafe(x, y, rgba)
|
||||||
|
|
||||||
const h = 0.5.float32
|
const h = 0.5.float32
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
import chroma, pixie, fidget/opengl/perf
|
import chroma, pixie, benchy
|
||||||
|
|
||||||
const iterations = 100
|
|
||||||
|
|
||||||
proc fillOriginal(a: Image, rgba: ColorRGBA) =
|
proc fillOriginal(a: Image, rgba: ColorRGBA) =
|
||||||
for y in 0 ..< a.height:
|
for y in 0 ..< a.height:
|
||||||
|
@ -36,44 +34,38 @@ proc sharpOpacityOriginal(a: Image): Image =
|
||||||
else:
|
else:
|
||||||
result.setRgbaUnsafe(x, y, rgba(255, 255, 255, 255))
|
result.setRgbaUnsafe(x, y, rgba(255, 255, 255, 255))
|
||||||
|
|
||||||
timeIt "fillOriginal":
|
|
||||||
var a = newImage(2560, 1440)
|
var a = newImage(2560, 1440)
|
||||||
for i in 0 ..< iterations:
|
|
||||||
|
timeIt "fillOriginal":
|
||||||
a.fillOriginal(rgba(255, 255, 255, 255))
|
a.fillOriginal(rgba(255, 255, 255, 255))
|
||||||
doAssert a[0, 0] == rgba(255, 255, 255, 255)
|
doAssert a[0, 0] == rgba(255, 255, 255, 255)
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "fill":
|
timeIt "fill":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a.fill(rgba(255, 255, 255, 255))
|
a.fill(rgba(255, 255, 255, 255))
|
||||||
doAssert a[0, 0] == rgba(255, 255, 255, 255)
|
doAssert a[0, 0] == rgba(255, 255, 255, 255)
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "invertOriginal":
|
timeIt "invertOriginal":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a.invertOriginal()
|
a.invertOriginal()
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "invert":
|
timeIt "invert":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a.invert()
|
a.invert()
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "applyOpacityOriginal":
|
timeIt "applyOpacityOriginal":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a = a.applyOpacityOriginal(0.5)
|
a = a.applyOpacityOriginal(0.5)
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "applyOpacity":
|
timeIt "applyOpacity":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a.applyOpacity(0.5)
|
a.applyOpacity(0.5)
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "sharpOpacityOriginal":
|
timeIt "sharpOpacityOriginal":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a = a.sharpOpacityOriginal()
|
a = a.sharpOpacityOriginal()
|
||||||
|
keep(a)
|
||||||
|
|
||||||
timeIt "sharpOpacity":
|
timeIt "sharpOpacity":
|
||||||
var a = newImage(2560, 1440)
|
|
||||||
for i in 0 ..< iterations:
|
|
||||||
a.sharpOpacity()
|
a.sharpOpacity()
|
||||||
|
keep(a)
|
||||||
|
|
|
@ -1,168 +1,32 @@
|
||||||
import pixie, chroma, vmath, fidget/opengl/perf
|
import pixie, chroma, vmath, benchy
|
||||||
|
|
||||||
# timeIt "drawOverwrite bmOverwrite":
|
block:
|
||||||
# var tmp = 0
|
var c: Image
|
||||||
# var c: Image
|
var a = newImage(1000, 1000)
|
||||||
# for i in 0 ..< 1000:
|
a.fill(rgba(255, 0, 0, 255))
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
var b = newImage(1000, 1000)
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
b.fill(rgba(0, 255, 0, 255))
|
||||||
# c = a.drawOverwrite(b, translate(vec2(25, 25))) # Copy
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawOverwrite.bmOverwrite.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlend bmOverwrite":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.drawBlend(b, translate(vec2(25, 25)), bmOverwrite)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlend.bmOverwrite.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlendSmooth bmOverwrite":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.drawBlendSmooth(b, translate(vec2(25, 25)), bmOverwrite)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlendSmooth.bmOverwrite.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlend bmNormal":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.drawBlend(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlend.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlendSmooth bmNormal":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.drawBlendSmooth(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlendSmooth.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
timeIt "drawCorrect bmNormal":
|
timeIt "drawCorrect bmNormal":
|
||||||
var tmp = 0
|
a.drawCorrect(b, translate(vec2(25, 25)), bmNormal)
|
||||||
var c: Image
|
keep(b)
|
||||||
for i in 0 ..< 1000:
|
|
||||||
var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
c = a.drawCorrect(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
tmp += c.width * c.height
|
|
||||||
c.writeFile("tests/images/bench.drawCorrect.bmNormal.png")
|
|
||||||
echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawStepper bmNormal":
|
block:
|
||||||
# var tmp = 0
|
var a = newImage(1000, 1000)
|
||||||
# var c: Image
|
a.fill(rgba(255, 0, 0, 255))
|
||||||
# for i in 0 ..< 1000:
|
var b = newImage(1000, 1000)
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
b.fill(rgba(0, 255, 0, 255))
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.drawStepper(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawStepper.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawInPlace bmNormal":
|
|
||||||
# var tmp = 0
|
|
||||||
# var a: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# a.drawInPlace(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
# tmp += a.width * a.height
|
|
||||||
# a.writeFile("tests/images/bench.drawInPlace.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawUberCopy bmNormal":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.draw(b, translate(vec2(25, 25)), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawUberCopy.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
timeIt "draw bmNormal":
|
timeIt "draw bmNormal":
|
||||||
var tmp = 0
|
|
||||||
var a: Image
|
|
||||||
for i in 0 ..< 1000:
|
|
||||||
a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
a.draw(b, translate(vec2(25, 25)), bmNormal)
|
a.draw(b, translate(vec2(25, 25)), bmNormal)
|
||||||
tmp += a.width * a.height
|
keep(b)
|
||||||
a.writeFile("tests/images/bench.draw.bmNormal.png")
|
|
||||||
echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawUberCopy Smooth bmNormal":
|
block:
|
||||||
# var tmp = 0
|
var a = newImage(1000, 1000)
|
||||||
# var c: Image
|
a.fill(rgba(255, 0, 0, 255))
|
||||||
# for i in 0 ..< 1000:
|
var b = newImage(1000, 1000)
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
b.fill(rgba(0, 255, 0, 255))
|
||||||
# var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
# c = a.draw(b, translate(vec2(25.2, 25.2)), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawUberCopy.Smooth.bmNormal.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
timeIt "draw Smooth bmNormal":
|
timeIt "draw Smooth bmNormal":
|
||||||
var tmp = 0
|
|
||||||
var a: Image
|
|
||||||
for i in 0 ..< 1000:
|
|
||||||
a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
var b = newImageFill(100, 100, rgba(0, 255, 0, 255))
|
|
||||||
a.draw(b, translate(vec2(25.2, 25.2)), bmNormal)
|
a.draw(b, translate(vec2(25.2, 25.2)), bmNormal)
|
||||||
tmp += a.width * a.height
|
keep(b)
|
||||||
a.writeFile("tests/images/bench.draw.Smooth.bmNormal.png")
|
|
||||||
echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlend bmSaturation":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 0, 0, 255))
|
|
||||||
# c = a.drawBlend(b, translate(vec2(25, 25)), bmSaturation)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlend.bmSaturation.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "drawBlendSmooth bmSaturation":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImageFill(100, 100, rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImageFill(100, 100, rgba(0, 0, 0, 255))
|
|
||||||
# c = a.drawBlendSmooth(b, translate(vec2(25, 25)), bmSaturation)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/bench.drawBlendSmooth.bmSaturation.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
||||||
# timeIt "benchDrawFast3 Rotation":
|
|
||||||
# var tmp = 0
|
|
||||||
# var c: Image
|
|
||||||
# for i in 0 ..< 1000:
|
|
||||||
# var a = newImage(100, 100)
|
|
||||||
# a.fill(rgba(255, 0, 0, 255))
|
|
||||||
# var b = newImage(100, 100)
|
|
||||||
# b.fill(rgba(0, 0, 0, 255))
|
|
||||||
# c = a.drawFast3(b, translate(vec2(25, 25)) * rotationMat3(PI/2), bmNormal)
|
|
||||||
# tmp += c.width * c.height
|
|
||||||
# c.writeFile("tests/images/benchDrawFast3Rotation.png")
|
|
||||||
# echo tmp
|
|
||||||
|
|
Loading…
Reference in a new issue