pixie/tests/benchmark_blends.nim
Ryan Oldenburg 8aab927127 unused
2021-01-28 22:46:12 -06:00

336 lines
7.9 KiB
Nim

import benchy, chroma, pixie/images
include pixie/blends
let
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":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendNormal(backdrop.data[i], source.data[i])
reset()
# timeIt "blendNormalFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendNormalFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendDarken":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendDarken(backdrop.data[i], source.data[i])
reset()
# timeIt "blendDarkenFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendDarkenFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendMultiply":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendMultiply(backdrop.data[i], source.data[i])
reset()
# timeIt "blendMultiplyFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendMultiplyFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendLinearBurn":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLinearBurn(backdrop.data[i], source.data[i])
reset()
# timeIt "blendLinearBurnFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLinearBurnFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendColorBurn":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColorBurn(backdrop.data[i], source.data[i])
reset()
# timeIt "blendColorBurnFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendColorBurnFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendLighten":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLighten(backdrop.data[i], source.data[i])
reset()
# timeIt "blendLightenFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLightenFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendScreen":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendScreen(backdrop.data[i], source.data[i])
reset()
# timeIt "blendScreenFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendScreenFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendLinearDodge":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLinearDodge(backdrop.data[i], source.data[i])
reset()
# timeIt "blendLinearDodgeFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLinearDodgeFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendColorDodge":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColorDodge(backdrop.data[i], source.data[i])
reset()
# timeIt "blendColorDodgeFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendColorDodgeFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendOverlay":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendOverlay(backdrop.data[i], source.data[i])
reset()
# timeIt "blendOverlayFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendOverlayFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendSoftLight":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSoftLight(backdrop.data[i], source.data[i])
reset()
# timeIt "blendSoftLightFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendSoftLightFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendHardLight":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendHardLight(backdrop.data[i], source.data[i])
reset()
# timeIt "blendHardLightFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendHardLightFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendDifference":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendDifference(backdrop.data[i], source.data[i])
reset()
# timeIt "blendDifferenceFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendDifferenceFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendExclusion":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendExclusion(backdrop.data[i], source.data[i])
reset()
# timeIt "blendExclusionFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendExclusionFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendHue":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendHue(backdrop.data[i], source.data[i])
reset()
# timeIt "blendHueFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendHueFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendSaturation":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSaturation(backdrop.data[i], source.data[i])
reset()
# timeIt "blendSaturationFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendSaturationFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
reset()
timeIt "blendColor":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendColor(backdrop.data[i], source.data[i])
reset()
# timeIt "blendColorFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendColorFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendLuminosity":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendLuminosity(backdrop.data[i], source.data[i])
reset()
# timeIt "blendLuminosityFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendLuminosityFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendMask":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendMask(backdrop.data[i], source.data[i])
reset()
# timeIt "blendMaskFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendMaskFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendSubtractMask":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendSubtractMask(backdrop.data[i], source.data[i])
reset()
# timeIt "blendSubtractMaskFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendSubtractMaskFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendIntersectMask":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendIntersectMask(backdrop.data[i], source.data[i])
reset()
# timeIt "blendIntersectMaskFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendIntersectMaskFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendExcludeMask":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendExcludeMask(backdrop.data[i], source.data[i])
reset()
# timeIt "blendExcludeMaskFloats":
# for i in 0 ..< backdrop.data.len:
# backdrop.data[i] = blendExcludeMaskFloats(
# backdrop.data[i].color, source.data[i].color
# ).rgba
# reset()
timeIt "blendNormalPremultiplied":
for i in 0 ..< backdrop.data.len:
backdrop.data[i] = blendNormalPremultiplied(backdrop.data[i], source.data[i])
when defined(amd64) and not defined(pixieNoSimd):
import nimsimd/sse2
timeIt "blendNormalPremultiplied [simd]":
for i in countup(0, backdrop.data.len - 4, 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, blendNormalPremultiplied(b, s))