Comments (5)
Thanks @glennwilton
The current code is such because it has been tested for speed in many optimizing compilers and this variant runs fast. The two loops are vectorized in some cases. I choose to keep this code for clarity sake. Also, I found the whole tetrahedra partition has to be recomputed because sometimes is different when K advances. Assembly code produced by optimizer is quite different from C, so those additions probably are not there.
If you want to provide a PR, I will be glad to run it across an extensive throughput test bed I keep for such cases.
from little-cms.
Thanks, I did not consider compiler optimisations, which negate the complexity; I'm using a similar function in Javascript on 3D/4D Luts and noticed the optimisations that make a big difference in JS, as I need all the optimisations I can get!!
from little-cms.
Yep, JS is a quite different thing. You can try what modern optimizers does in C here:
I tried this code with -Ofast as options:
int test()
{
int a = 0;
for (int i=0; i < 10; i++)
{
a += i*2;
}
for (int j=0; j < 10; j++)
{
a -= j/3;
}
return a;
}
And the compiler generated this assembly:
test():
mov eax, 78
ret
from little-cms.
That is interesting. It has been a long time since I did anything In C.
Out of interest are there any utils for testing the throughput performance of LittleCMS, I'm curious to see the speed difference between LCMS and what I've done in JS. My C is very rusty, but I suspect I could modify transicc.
On my Ryzen7 3700X in Javascript (all single Core/ No threads) using a prebuilt RGB->CMYK LUT 33x33x33 with 64bit float values , and 8bit input/out arrays , Chrome is pushing through 39 million pixels per second, and Firefox 36 million pixels per second. Fast enough for what I need but interesting to see what C code can pump though.
from little-cms.
No defect was described here, so I close the issue
from little-cms.
Related Issues (20)
- CI: use a dependency update tool to keep GitHub Actions updated
- website blog doesn't announce 2.16 release HOT 1
- Backwards incompatible API-change in 2.16 HOT 5
- The fast float plugin doesn't premultiply alpha HOT 1
- Plugins lack soversion when configured with meson
- Possible NPD in cmsCreate_OkLabProfile HOT 2
- FTBFS since commit c429e37 wrt type checking on pointer types HOT 2
- ICC profile with CICP tag HOT 14
- Unable to find program in file system after install HOT 4
- Overflow checks in cmsCreateExtendedTransform HOT 1
- CIE XYZ D65 profile HOT 5
- Non-equidistant planes in DoTransformLineStride HOT 1
- cmsCreateTransform returns nullptr in 2.16, but works in 2.15- HOT 6
- The build system seems to have obsolete zlib support HOT 1
- MD5 computation of Profile ID seems to zero wrong header field HOT 1
- Add ability to disable building tests
- cmsDoTransform for 64 bit image size HOT 5
- Feature request: utility function to duplicate colour profiles HOT 2
- Having trouble with `cmsPluginTag` using `cmsSigUInt32ArrayType` as the data type HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from little-cms.