KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Answering to another Stack Overflow question ( this one ) I stumbled upon an interesting sub-problem. What is the fastest way to sort an array of 6 integers? As the question is very low level: we can't assume libraries are available (and the call itself has its cost), only plain C to avoid emptying instruction pipeline (that has a very high cost) we should probably minimize branches, jumps, and every other kind of control flow breaking (like those hidden behind sequence points in && or || ). room is constrained and minimizing registers and memory use is an issue, ideally in place sort is probably best. Really this question is a kind of Golf where the goal is not to minimize source length but execution time. I call it 'Zening' code as used in the title of the book Zen of Code optimization by Michael Abrash and its sequels . As for why it is interesting, there is several layers: the example is simple and easy to understand and measure, not much C skill involved it shows effects of choice of a good algorithm for the problem, but also effects of the compiler and underlying hardware. Here is my reference (naive, not optimized) implementation and my test set. #include <stdio.h> static __inline__ int sort6(int * d){ char j, i, imin; int tmp; for (j = 0 ; j < 5 ; j++){ imin = j; for (i = j + 1; i < 6 ; i++){ if (d[i] < d[imi
Tags (comma-separated)
Save Edits
Cancel