pixie/tests/benchmark_blends.nim

152 lines
3.5 KiB
Nim
Raw Normal View History

2021-02-14 18:27:32 +00:00
import benchy, chroma, pixie/images, vmath
include pixie/blends
2020-12-09 07:25:48 +00:00
let
2021-01-23 04:54:57 +00:00
backdrop = newImage(256, 256)
source = newImage(256, 256)
source.fill(rgba(100, 100, 100, 100))
template reset() =
backdrop.fill(rgba(0, 0, 0, 255))
reset()
timeIt "blendNormal":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendNormal(backdrop.data[i], source.data[i])
reset()
timeIt "blendDarken":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendDarken(backdrop.data[i], source.data[i])
reset()
timeIt "blendMultiply":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendMultiply(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
2021-10-03 22:49:21 +00:00
# reset()
2021-10-03 22:49:21 +00:00
# timeIt "blendLinearBurn":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLinearBurn(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendColorBurn":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColorBurn(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendLighten":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLighten(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendScreen":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendScreen(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
2021-10-03 22:49:21 +00:00
# reset()
2021-10-03 22:49:21 +00:00
# timeIt "blendLinearDodge":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLinearDodge(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendColorDodge":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColorDodge(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendOverlay":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendOverlay(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendSoftLight":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSoftLight(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendHardLight":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendHardLight(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendDifference":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendDifference(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendExclusion":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendExclusion(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendHue":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendHue(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendSaturation":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSaturation(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendColor":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColor(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendLuminosity":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLuminosity(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendMask":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendMask(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendSubtractMask":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSubtractMask(backdrop.data[i], source.data[i])
2021-01-23 04:54:57 +00:00
reset()
timeIt "blendExcludeMask":
2021-01-23 04:54:57 +00:00
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendExcludeMask(backdrop.data[i], source.data[i])
when defined(amd64) and not defined(pixieNoSimd):
import nimsimd/sse2
reset()
timeIt "blendNormal [simd]":
2021-11-19 18:31:09 +00:00
var i: int
while i < backdrop.data.len - 4:
let
b = mm_loadu_si128(backdrop.data[i].addr)
s = mm_loadu_si128(source.data[i].addr)
mm_storeu_si128(backdrop.data[i].addr, blendNormalSimd(b, s))
2021-11-19 18:31:09 +00:00
i += 4