Last active
June 30, 2020 16:48
-
-
Save yjbanov/2fa6e86cd83d9943ca5912c0fe7581cf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@JS('window.flutter_canvas_kit.BlendMode.Clear.value') | |
external int get canvasKitBlendModeClear; | |
@JS('window.flutter_canvas_kit.BlendMode.Src.value') | |
external int get canvasKitBlendModeSrc; | |
@JS('window.flutter_canvas_kit.BlendMode.Dst.value') | |
external int get canvasKitBlendModeDst; | |
@JS('window.flutter_canvas_kit.BlendMode.SrcOver.value') | |
external int get canvasKitBlendModeSrcOver; | |
@JS('window.flutter_canvas_kit.BlendMode.DstOver.value') | |
external int get canvasKitBlendModeDstOver; | |
@JS('window.flutter_canvas_kit.BlendMode.SrcIn.value') | |
external int get canvasKitBlendModeSrcIn; | |
@JS('window.flutter_canvas_kit.BlendMode.DstIn.value') | |
external int get canvasKitBlendModeDstIn; | |
@JS('window.flutter_canvas_kit.BlendMode.SrcOut.value') | |
external int get canvasKitBlendModeSrcOut; | |
@JS('window.flutter_canvas_kit.BlendMode.DstOut.value') | |
external int get canvasKitBlendModeDstOut; | |
@JS('window.flutter_canvas_kit.BlendMode.SrcATop.value') | |
external int get canvasKitBlendModeSrcATop; | |
@JS('window.flutter_canvas_kit.BlendMode.DstATop.value') | |
external int get canvasKitBlendModeDstATop; | |
@JS('window.flutter_canvas_kit.BlendMode.Xor.value') | |
external int get canvasKitBlendModeXor; | |
@JS('window.flutter_canvas_kit.BlendMode.Plus.value') | |
external int get canvasKitBlendModePlus; | |
@JS('window.flutter_canvas_kit.BlendMode.Modulate.value') | |
external int get canvasKitBlendModeModulate; | |
@JS('window.flutter_canvas_kit.BlendMode.Screen.value') | |
external int get canvasKitBlendModeScreen; | |
@JS('window.flutter_canvas_kit.BlendMode.Overlay.value') | |
external int get canvasKitBlendModeOverlay; | |
@JS('window.flutter_canvas_kit.BlendMode.Darken.value') | |
external int get canvasKitBlendModeDarken; | |
@JS('window.flutter_canvas_kit.BlendMode.Lighten.value') | |
external int get canvasKitBlendModeLighten; | |
@JS('window.flutter_canvas_kit.BlendMode.ColorDodge.value') | |
external int get canvasKitBlendModeColorDodge; | |
@JS('window.flutter_canvas_kit.BlendMode.ColorBurn.value') | |
external int get canvasKitBlendModeColorBurn; | |
@JS('window.flutter_canvas_kit.BlendMode.HardLight.value') | |
external int get canvasKitBlendModeHardLight; | |
@JS('window.flutter_canvas_kit.BlendMode.SoftLight.value') | |
external int get canvasKitBlendModeSoftLight; | |
@JS('window.flutter_canvas_kit.BlendMode.Difference.value') | |
external int get canvasKitBlendModeDifference; | |
@JS('window.flutter_canvas_kit.BlendMode.Exclusion.value') | |
external int get canvasKitBlendModeExclusion; | |
@JS('window.flutter_canvas_kit.BlendMode.Multiply.value') | |
external int get canvasKitBlendModeMultiply; | |
@JS('window.flutter_canvas_kit.BlendMode.Hue.value') | |
external int get canvasKitBlendModeHue; | |
@JS('window.flutter_canvas_kit.BlendMode.Saturation.value') | |
external int get canvasKitBlendModeSaturation; | |
@JS('window.flutter_canvas_kit.BlendMode.Color.value') | |
external int get canvasKitBlendModeColor; | |
@JS('window.flutter_canvas_kit.BlendMode.Luminosity.value') | |
external int get canvasKitBlendModeLuminosity; | |
typedef int BlendModeGetter(); | |
void benchmarkAtJS() { | |
final List<BlendModeGetter> flatGetters = <BlendModeGetter>[ | |
() => canvasKitBlendModeClear, | |
() => canvasKitBlendModeSrc, | |
() => canvasKitBlendModeDst, | |
() => canvasKitBlendModeSrcOver, | |
() => canvasKitBlendModeDstOver, | |
() => canvasKitBlendModeSrcIn, | |
() => canvasKitBlendModeDstIn, | |
() => canvasKitBlendModeSrcOut, | |
() => canvasKitBlendModeDstOut, | |
() => canvasKitBlendModeSrcATop, | |
() => canvasKitBlendModeDstATop, | |
() => canvasKitBlendModeXor, | |
() => canvasKitBlendModePlus, | |
() => canvasKitBlendModeModulate, | |
() => canvasKitBlendModeScreen, | |
() => canvasKitBlendModeOverlay, | |
() => canvasKitBlendModeDarken, | |
() => canvasKitBlendModeLighten, | |
() => canvasKitBlendModeColorDodge, | |
() => canvasKitBlendModeColorBurn, | |
() => canvasKitBlendModeHardLight, | |
() => canvasKitBlendModeSoftLight, | |
() => canvasKitBlendModeDifference, | |
() => canvasKitBlendModeExclusion, | |
() => canvasKitBlendModeMultiply, | |
() => canvasKitBlendModeHue, | |
() => canvasKitBlendModeSaturation, | |
() => canvasKitBlendModeColor, | |
() => canvasKitBlendModeLuminosity, | |
]; | |
final List<BlendModeGetter> structuredGetters = <BlendModeGetter>[ | |
() => canvasKit2.BlendMode.Clear.value, | |
() => canvasKit2.BlendMode.Src.value, | |
() => canvasKit2.BlendMode.Dst.value, | |
() => canvasKit2.BlendMode.SrcOver.value, | |
() => canvasKit2.BlendMode.DstOver.value, | |
() => canvasKit2.BlendMode.SrcIn.value, | |
() => canvasKit2.BlendMode.DstIn.value, | |
() => canvasKit2.BlendMode.SrcOut.value, | |
() => canvasKit2.BlendMode.DstOut.value, | |
() => canvasKit2.BlendMode.SrcATop.value, | |
() => canvasKit2.BlendMode.DstATop.value, | |
() => canvasKit2.BlendMode.Xor.value, | |
() => canvasKit2.BlendMode.Plus.value, | |
() => canvasKit2.BlendMode.Modulate.value, | |
() => canvasKit2.BlendMode.Screen.value, | |
() => canvasKit2.BlendMode.Overlay.value, | |
() => canvasKit2.BlendMode.Darken.value, | |
() => canvasKit2.BlendMode.Lighten.value, | |
() => canvasKit2.BlendMode.ColorDodge.value, | |
() => canvasKit2.BlendMode.ColorBurn.value, | |
() => canvasKit2.BlendMode.HardLight.value, | |
() => canvasKit2.BlendMode.SoftLight.value, | |
() => canvasKit2.BlendMode.Difference.value, | |
() => canvasKit2.BlendMode.Exclusion.value, | |
() => canvasKit2.BlendMode.Multiply.value, | |
() => canvasKit2.BlendMode.Hue.value, | |
() => canvasKit2.BlendMode.Saturation.value, | |
() => canvasKit2.BlendMode.Color.value, | |
() => canvasKit2.BlendMode.Luminosity.value, | |
]; | |
final int len = flatGetters.length; | |
for (int j = 0; j < 10; j++) { | |
print('Benchmarking flat getters'); | |
final Stopwatch sw = Stopwatch(); | |
sw.start(); | |
for (int i = 0; i < 10000; i++) { | |
flatGetters[i % len](); | |
} | |
sw.stop(); | |
print('Flat getters took ${sw.elapsedMicroseconds}us'); | |
sw.reset(); | |
print('Benchmarking structured getters'); | |
sw.start(); | |
for (int i = 0; i < 10000; i++) { | |
structuredGetters[i % len](); | |
} | |
sw.stop(); | |
print('Structured getters took ${sw.elapsedMicroseconds}us'); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment