- Epsilon for spring resolution can now be specified
- Debug builds should be much faster as specializations are conditionally compiled based on Debug / Release
- Note: This means debug builds will animate more "slowly", but it shouldn't be as noticeable unless you're doing >100 animations simultaneously.
Debug Benchmark Results
SIMD SpringAnimations.Execute 5000 CGFloat SpringAnimations 21.518 ms ± 0.23 % 20
SIMD SpringAnimations.Execute 5000 Float SpringAnimations 21.508 ms ± 0.25 % 20
SIMD SpringAnimations.Execute 5000 Double SpringAnimations 21.479 ms ± 0.27 % 20
SIMD SpringAnimations.Execute 5000 CGPoint SpringAnimations 21.495 ms ± 0.29 % 20
SIMD SpringAnimations.Execute 5000 CGSize SpringAnimations 21.515 ms ± 1.46 % 20
SIMD SpringAnimations.Execute 5000 SIMD2<Float> SpringAnimations 21.664 ms ± 2.37 % 20
SIMD SpringAnimations.Execute 5000 SIMD2<Double> SpringAnimations 21.654 ms ± 3.34 % 20
SIMD SpringAnimations.Execute 5000 CGRect SpringAnimations 36.023 ms ± 0.38 % 20
SIMD SpringAnimations.Execute 5000 SIMD4<Float> SpringAnimations 33.058 ms ± 0.21 % 20
SIMD SpringAnimations.Execute 5000 SIMD4<Double> SpringAnimations 36.017 ms ± 0.26 % 20
SIMD SpringAnimations.Execute 5000 SIMD8<Float> SpringAnimations 59.908 ms ± 0.26 % 20
SIMD SpringAnimations.Execute 5000 SIMD8<Double> SpringAnimations 57.198 ms ± 1.03 % 20
SIMD SpringAnimations.Execute 5000 SIMD16<Float> SpringAnimations 102.920 ms ± 0.19 % 20
SIMD SpringAnimations.Execute 5000 SIMD16<Double> SpringAnimations 104.897 ms ± 0.18 % 20
SIMD SpringAnimations.Execute 5000 SIMD32<Float> SpringAnimations 204.714 ms ± 0.33 % 20
SIMD SpringAnimations.Execute 5000 SIMD32<Double> SpringAnimations 219.706 ms ± 0.50 % 20
SIMD SpringAnimations.Execute 5000 SIMD64<Float> SpringAnimations 430.118 ms ± 0.24 % 20
SIMD SpringAnimations.Execute 5000 SIMD64<Double> SpringAnimations 520.022 ms ± 0.65 % 20
SIMD BasicAnimations.Execute 5000 CGFloat BasicAnimations 25.605 ms ± 0.12 % 20
SIMD BasicAnimations.Execute 5000 Float BasicAnimations 25.523 ms ± 0.29 % 20
SIMD BasicAnimations.Execute 5000 Double BasicAnimations 25.629 ms ± 0.23 % 20
SIMD BasicAnimations.Execute 5000 CGPoint BasicAnimations 25.607 ms ± 0.72 % 20
SIMD BasicAnimations.Execute 5000 CGSize BasicAnimations 25.607 ms ± 0.19 % 20
SIMD BasicAnimations.Execute 5000 SIMD2<Float> BasicAnimations 25.518 ms ± 0.30 % 20
SIMD BasicAnimations.Execute 5000 SIMD2<Double> BasicAnimations 25.579 ms ± 0.21 % 20
SIMD BasicAnimations.Execute 5000 CGRect BasicAnimations 37.380 ms ± 0.20 % 20
SIMD BasicAnimations.Execute 5000 SIMD4<Float> BasicAnimations 36.088 ms ± 1.05 % 20
SIMD BasicAnimations.Execute 5000 SIMD4<Double> BasicAnimations 38.007 ms ± 0.17 % 20
SIMD BasicAnimations.Execute 5000 SIMD8<Float> BasicAnimations 58.354 ms ± 0.11 % 20
SIMD BasicAnimations.Execute 5000 SIMD8<Double> BasicAnimations 57.687 ms ± 0.33 % 20
SIMD BasicAnimations.Execute 5000 SIMD16<Float> BasicAnimations 99.497 ms ± 0.30 % 20
SIMD BasicAnimations.Execute 5000 SIMD16<Double> BasicAnimations 99.983 ms ± 0.18 % 20
SIMD BasicAnimations.Execute 5000 SIMD32<Float> BasicAnimations 184.365 ms ± 0.16 % 20
SIMD BasicAnimations.Execute 5000 SIMD32<Double> BasicAnimations 189.755 ms ± 0.28 % 20
SIMD BasicAnimations.Execute 5000 SIMD64<Float> BasicAnimations 360.827 ms ± 0.27 % 20
SIMD BasicAnimations.Execute 5000 SIMD64<Double> BasicAnimations 394.734 ms ± 0.14 % 20
SIMD DecayAnimations.Execute 5000 CGFloat DecayAnimations 8.754 ms ± 4.19 % 20
SIMD DecayAnimations.Execute 5000 Float DecayAnimations 9.067 ms ± 3.14 % 20
SIMD DecayAnimations.Execute 5000 Double DecayAnimations 8.729 ms ± 1.17 % 20
SIMD DecayAnimations.Execute 5000 CGPoint DecayAnimations 8.766 ms ± 0.82 % 20
SIMD DecayAnimations.Execute 5000 CGSize DecayAnimations 8.746 ms ± 0.55 % 20
SIMD DecayAnimations.Execute 5000 SIMD2<Float> DecayAnimations 8.717 ms ± 0.41 % 20
SIMD DecayAnimations.Execute 5000 SIMD2<Double> DecayAnimations 8.752 ms ± 0.75 % 20
SIMD DecayAnimations.Execute 5000 CGRect DecayAnimations 13.869 ms ± 0.73 % 20
SIMD DecayAnimations.Execute 5000 SIMD4<Float> DecayAnimations 13.066 ms ± 0.37 % 20
SIMD DecayAnimations.Execute 5000 SIMD4<Double> DecayAnimations 13.866 ms ± 0.31 % 20
SIMD DecayAnimations.Execute 5000 SIMD8<Float> DecayAnimations 22.667 ms ± 0.24 % 20
SIMD DecayAnimations.Execute 5000 SIMD8<Double> DecayAnimations 22.138 ms ± 0.67 % 20
SIMD DecayAnimations.Execute 5000 SIMD16<Float> DecayAnimations 39.300 ms ± 0.19 % 20
SIMD DecayAnimations.Execute 5000 SIMD16<Double> DecayAnimations 39.926 ms ± 0.24 % 20
SIMD DecayAnimations.Execute 5000 SIMD32<Float> DecayAnimations 75.508 ms ± 0.18 % 20
SIMD DecayAnimations.Execute 5000 SIMD32<Double> DecayAnimations 78.951 ms ± 0.20 % 20
SIMD DecayAnimations.Execute 5000 SIMD64<Float> DecayAnimations 153.052 ms ± 0.18 % 20
SIMD DecayAnimations.Execute 5000 SIMD64<Double> DecayAnimations 171.143 ms ± 1.76 % 20
Release Benchmark Results
SIMD SpringAnimations.Execute 5000 CGFloat SpringAnimations 1.079 ms ± 2.52 % 20
SIMD SpringAnimations.Execute 5000 Float SpringAnimations 1.079 ms ± 2.72 % 20
SIMD SpringAnimations.Execute 5000 Double SpringAnimations 1.094 ms ± 7.36 % 20
SIMD SpringAnimations.Execute 5000 CGPoint SpringAnimations 1.121 ms ± 3.24 % 20
SIMD SpringAnimations.Execute 5000 CGSize SpringAnimations 1.120 ms ± 6.13 % 20
SIMD SpringAnimations.Execute 5000 SIMD2<Float> SpringAnimations 1.065 ms ± 3.69 % 20
SIMD SpringAnimations.Execute 5000 SIMD2<Double> SpringAnimations 1.053 ms ± 1.33 % 20
SIMD SpringAnimations.Execute 5000 CGRect SpringAnimations 1.155 ms ± 3.56 % 20
SIMD SpringAnimations.Execute 5000 SIMD4<Float> SpringAnimations 1.099 ms ± 1.85 % 20
SIMD SpringAnimations.Execute 5000 SIMD4<Double> SpringAnimations 1.128 ms ± 2.08 % 20
SIMD SpringAnimations.Execute 5000 SIMD8<Float> SpringAnimations 1.151 ms ± 2.43 % 20
SIMD SpringAnimations.Execute 5000 SIMD8<Double> SpringAnimations 1.150 ms ± 3.12 % 20
SIMD SpringAnimations.Execute 5000 SIMD16<Float> SpringAnimations 1.310 ms ± 2.53 % 20
SIMD SpringAnimations.Execute 5000 SIMD16<Double> SpringAnimations 1.375 ms ± 1.98 % 20
SIMD SpringAnimations.Execute 5000 SIMD32<Float> SpringAnimations 19.382 ms ± 1.26 % 20
SIMD SpringAnimations.Execute 5000 SIMD32<Double> SpringAnimations 33.449 ms ± 1.30 % 20
SIMD SpringAnimations.Execute 5000 SIMD64<Float> SpringAnimations 72.010 ms ± 0.55 % 20
SIMD SpringAnimations.Execute 5000 SIMD64<Double> SpringAnimations 148.179 ms ± 2.11 % 20
SIMD BasicAnimations.Execute 5000 CGFloat BasicAnimations 5.930 ms ± 5.08 % 20
SIMD BasicAnimations.Execute 5000 Float BasicAnimations 5.899 ms ± 3.25 % 20
SIMD BasicAnimations.Execute 5000 Double BasicAnimations 6.113 ms ± 3.91 % 20
SIMD BasicAnimations.Execute 5000 CGPoint BasicAnimations 5.942 ms ± 2.48 % 20
SIMD BasicAnimations.Execute 5000 CGSize BasicAnimations 5.868 ms ± 3.63 % 20
SIMD BasicAnimations.Execute 5000 SIMD2<Float> BasicAnimations 6.022 ms ± 2.91 % 20
SIMD BasicAnimations.Execute 5000 SIMD2<Double> BasicAnimations 6.115 ms ± 2.98 % 20
SIMD BasicAnimations.Execute 5000 CGRect BasicAnimations 9.531 ms ± 2.59 % 20
SIMD BasicAnimations.Execute 5000 SIMD4<Float> BasicAnimations 8.652 ms ± 2.75 % 20
SIMD BasicAnimations.Execute 5000 SIMD4<Double> BasicAnimations 9.523 ms ± 2.99 % 20
SIMD BasicAnimations.Execute 5000 SIMD8<Float> BasicAnimations 15.456 ms ± 1.64 % 20
SIMD BasicAnimations.Execute 5000 SIMD8<Double> BasicAnimations 15.152 ms ± 2.10 % 20
SIMD BasicAnimations.Execute 5000 SIMD16<Float> BasicAnimations 27.425 ms ± 1.16 % 20
SIMD BasicAnimations.Execute 5000 SIMD16<Double> BasicAnimations 27.727 ms ± 1.37 % 20
SIMD BasicAnimations.Execute 5000 SIMD32<Float> BasicAnimations 54.882 ms ± 0.69 % 20
SIMD BasicAnimations.Execute 5000 SIMD32<Double> BasicAnimations 59.237 ms ± 0.91 % 20
SIMD BasicAnimations.Execute 5000 SIMD64<Float> BasicAnimations 115.352 ms ± 0.61 % 20
SIMD BasicAnimations.Execute 5000 SIMD64<Double> BasicAnimations 138.727 ms ± 0.23 % 20
SIMD DecayAnimations.Execute 5000 CGFloat DecayAnimations 0.653 ms ± 1.57 % 20
SIMD DecayAnimations.Execute 5000 Float DecayAnimations 0.630 ms ± 1.02 % 20
SIMD DecayAnimations.Execute 5000 Double DecayAnimations 0.652 ms ± 1.01 % 20
SIMD DecayAnimations.Execute 5000 CGPoint DecayAnimations 0.652 ms ± 1.01 % 20
SIMD DecayAnimations.Execute 5000 CGSize DecayAnimations 0.653 ms ± 1.24 % 20
SIMD DecayAnimations.Execute 5000 SIMD2<Float> DecayAnimations 0.632 ms ± 2.39 % 20
SIMD DecayAnimations.Execute 5000 SIMD2<Double> DecayAnimations 0.652 ms ± 1.06 % 20
SIMD DecayAnimations.Execute 5000 CGRect DecayAnimations 0.687 ms ± 1.12 % 20
SIMD DecayAnimations.Execute 5000 SIMD4<Float> DecayAnimations 0.669 ms ± 0.80 % 20
SIMD DecayAnimations.Execute 5000 SIMD4<Double> DecayAnimations 0.689 ms ± 1.86 % 20
SIMD DecayAnimations.Execute 5000 SIMD8<Float> DecayAnimations 0.689 ms ± 0.87 % 20
SIMD DecayAnimations.Execute 5000 SIMD8<Double> DecayAnimations 0.719 ms ± 1.04 % 20
SIMD DecayAnimations.Execute 5000 SIMD16<Float> DecayAnimations 0.772 ms ± 0.72 % 20
SIMD DecayAnimations.Execute 5000 SIMD16<Double> DecayAnimations 0.890 ms ± 1.02 % 20
SIMD DecayAnimations.Execute 5000 SIMD32<Float> DecayAnimations 4.094 ms ± 0.27 % 20
SIMD DecayAnimations.Execute 5000 SIMD32<Double> DecayAnimations 6.932 ms ± 0.24 % 20
SIMD DecayAnimations.Execute 5000 SIMD64<Float> DecayAnimations 14.905 ms ± 0.60 % 20
SIMD DecayAnimations.Execute 5000 SIMD64<Double> DecayAnimations 30.404 ms ± 0.55 % 20