Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow RGB/XYZ conversion matrices to be pre-defined #308

Merged
merged 2 commits into from
Apr 10, 2023

Conversation

Ogeon
Copy link
Owner

@Ogeon Ogeon commented Apr 9, 2023

As suggested by @Kannen in #199 (comment), 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.

@Ogeon
Copy link
Owner Author

Ogeon commented Apr 9, 2023

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

@Ogeon
Copy link
Owner Author

Ogeon commented Apr 10, 2023

bors r+

@bors
Copy link
Contributor

bors bot commented Apr 10, 2023

Build succeeded:

@bors bors bot merged commit 4406b38 into master Apr 10, 2023
13 of 14 checks passed
@bors bors bot deleted the pre_defined_rgb_xyz_matrix branch April 10, 2023 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant