2 ms·
all those if's, no else's, ... looks like there is still room for optimization. ... and, pipelined CPU's dislike branching code. Are there tricks to do the sa
by dxjones 17y ago
all those if's, no else's, ... looks like there is still room for optimization.
... and, pipelined CPU's dislike branching code. Are there tricks to do the same computation with fewer branches?
- pmjordan 17y agoWell, if you haven't got multiplication, your CPU is probably not pipelined, either. Depending on the platform, you may, however, be able to find certain non-branching conditional instructions that help with this sort of algorithm.
- jws 17y agoIn the ARM there will not be branches. The sequences are short enough that conditional execution can be used. The deeply pipelined (x86 and such) processors have fast multiplies. This looks especially handy for embedded processors. I was planning to use a lookup table and linear interpolation in an upcoming project to approximate log on an AVR, but I think I'll go with this instead. The use of the comma operator is interesting.
- pmjordan 17y agoThe use of the comma operator is interesting. Interesting? Meh. It's the difference between if (foo) { a = x; b = y; } and if (foo) a = x, b = y; So it's purely used as a notational quirk. For loops and similar situations are when the comma operator really comes in handy - although you really need to watch out for the rule of not assigning to the same variable more than once before a sequence point, especially as many compilers will only warn you about it at highest warning level - or not at all.