Closed Ogeon closed 1 year ago
Hmm, looks like the benchmark action bumped into some issues. Here's the output from the log, at least, showing that the improvements:
group base changes
----- ---- -------
Cie family/lab to lch 1.03 3.3±0.07µs ? ?/sec 1.00 3.2±0.05µs ? ?/sec
Cie family/lab to xyz 1.00 760.3±9.37ns ? ?/sec 1.00 763.5±31.25ns ? ?/sec
Cie family/lch to lab 1.00 2.4±0.04µs ? ?/sec 1.01 2.4±0.05µs ? ?/sec
Cie family/linsrgb to xyz 13.76 4.2±0.08µs ? ?/sec 1.00 307.8±4.31ns ? ?/sec
Cie family/linsrgb to xyz - wide::f32x8 7.33 744.9±6.56ns ? ?/sec 1.00 101.6±2.32ns ? ?/sec
Cie family/xyz to lab 1.00 17.9±0.22µs ? ?/sec 1.01 18.0±0.40µs ? ?/sec
Cie family/xyz to yxy 1.00 629.7±10.15ns ? ?/sec 1.00 629.1±8.32ns ? ?/sec
Cie family/yxy to xyz 1.27 697.1±9.47ns ? ?/sec 1.00 548.6±7.04ns ? ?/sec
Matrix functions/matrix_inverse 1.00 10.7±0.23ns ? ?/sec 1.00 10.7±0.32ns ? ?/sec
Matrix functions/multiply_3x3 1.00 9.6±0.14ns ? ?/sec 1.00 9.7±0.17ns ? ?/sec
Matrix functions/multiply_rgb_to_xyz 1.00 6.0±0.08ns ? ?/sec 1.00 6.0±0.06ns ? ?/sec
Matrix functions/multiply_xyz 1.00 6.0±0.12ns ? ?/sec 1.00 6.0±0.09ns ? ?/sec
Matrix functions/multiply_xyz_to_rgb 1.00 6.0±0.07ns ? ?/sec 1.00 6.0±0.06ns ? ?/sec
Matrix functions/rgb_to_xyz_matrix 1.00 24.9±0.35ns ? ?/sec 1.00 24.9±0.44ns ? ?/sec
Rgb family/hsl to hsv 1.97 1286.0±15.85ns ? ?/sec 1.00 652.7±9.33ns ? ?/sec
Rgb family/hsl to linear hsl 1.02 13.1±0.25µs ? ?/sec 1.00 12.9±0.17µs ? ?/sec
Rgb family/hsl to rgb 1.00 2.1±0.03µs ? ?/sec 1.02 2.1±0.03µs ? ?/sec
Rgb family/hsv to hsl 1.00 822.7±10.58ns ? ?/sec 1.02 835.5±10.64ns ? ?/sec
Rgb family/hsv to hwb 1.00 233.5±2.43ns ? ?/sec 1.02 237.7±5.25ns ? ?/sec
Rgb family/hsv to linear hsv 1.01 11.7±0.17µs ? ?/sec 1.00 11.6±0.14µs ? ?/sec
Rgb family/hsv to rgb 1.00 1902.3±22.81ns ? ?/sec 1.01 1917.4±28.67ns ? ?/sec
Rgb family/hwb to hsv 1.00 478.6±6.05ns ? ?/sec 1.01 483.3±8.41ns ? ?/sec
Rgb family/hwb to linear hwb 1.00 12.4±0.29µs ? ?/sec 1.00 12.3±0.17µs ? ?/sec
Rgb family/linear hsl to hsl 1.01 11.3±0.26µs ? ?/sec 1.00 11.2±0.16µs ? ?/sec
Rgb family/linear hsv to hsv 1.00 10.2±0.15µs ? ?/sec 1.00 10.3±0.15µs ? ?/sec
Rgb family/linear hwb to hwb 1.01 11.3±0.16µs ? ?/sec 1.00 11.3±0.36µs ? ?/sec
Rgb family/linsrgb to rgb 1.00 5.9±0.10µs ? ?/sec 1.01 5.9±0.13µs ? ?/sec
Rgb family/linsrgb to rgb - wide::f32x8 1.02 5.2±0.08µs ? ?/sec 1.00 5.1±0.08µs ? ?/sec
Rgb family/linsrgb_f32 to rgb_u8 1.00 952.6±10.10ns ? ?/sec 1.01 961.9±12.88ns ? ?/sec
Rgb family/linsrgb_f64 to rgb_u8 1.00 1221.4±20.15ns ? ?/sec 1.00 1221.0±35.59ns ? ?/sec
Rgb family/rgb to hsl 1.89 1667.9±33.97ns ? ?/sec 1.00 880.6±17.05ns ? ?/sec
Rgb family/rgb to hsl - wide::f32x8 1.00 469.4±5.23ns ? ?/sec 1.00 469.9±7.90ns ? ?/sec
Rgb family/rgb to hsv 1.00 515.1±6.97ns ? ?/sec 1.01 520.9±7.71ns ? ?/sec
Rgb family/rgb to hsv - wide::f32x8 1.00 426.1±5.12ns ? ?/sec 1.00 426.4±5.97ns ? ?/sec
Rgb family/rgb to linsrgb 1.00 8.3±0.19µs ? ?/sec 1.00 8.3±0.14µs ? ?/sec
Rgb family/rgb to linsrgb - wide::f32x8 1.03 3.4±0.04µs ? ?/sec 1.00 3.3±0.04µs ? ?/sec
Rgb family/rgb_u8 to linsrgb_f32 1.00 304.5±5.28ns ? ?/sec 1.00 305.9±3.50ns ? ?/sec
Rgb family/rgb_u8 to linsrgb_f64 1.00 307.7±4.36ns ? ?/sec 1.02 312.6±5.71ns ? ?/sec
Rgb family/xyz to linsrgb 19.72 7.0±0.10µs ? ?/sec 1.00 355.7±4.17ns ? ?/sec
Rgb family/xyz to linsrgb - wide::f32x8 10.42 1100.9±17.61ns ? ?/sec 1.00 105.6±2.01ns ? ?/sec
bors r+
As suggested by @Kannen in https://github.com/Ogeon/palette/issues/199#issuecomment-1479207597, make it possible to have RGB to XYZ and XYZ to RGB matrices pre-defined for an RGB space. This results in significantly faster conversions.