I have been doing work in Mathematica which involves visualizing the extent to which photographic images fit within printing process color gamuts. A primary tool for this is ChromaticityPlot3D. I plot both the printer gamut and image pixel values in the same plot to examine the fit.
The only real problem with this is speed of execution. If I plot all the image points it can take tens of minutes. I reduce the number of points to 10000, assuming this will sample my image on a 100x100 grid. (It's not documented how the subset of points is chosen, but this seems reasonable.)
The result s that converting each of 10000 points RGB values to CIE coordinates and plotting the result takes 55 seconds. During the execution, the Windows 10 Resource Monitor reports 18% CPU utilization with no GPU activity. That's 5.5 ms per point.
It appears Mathematica is partially using one core on my four core laptop. I tried to Parallelize the function, but Mathematica declined.
For reference, here is statement evaluated. (But I did not attach the image or profile due to size.)
ChromaticityPlot3D[{fujiPearlProfile, testImage},
MaxPlotPoints -> maxPlotPoints,
FillingStyle -> {Opacity[1], Opacity[1]},
Appearance -> "VisibleSpectrum", ViewPoint -> viewPoint]
Can anyone suggest a way to speed this up?