The summary.
REAL PERFORMANCE IS DETERMINED BY THE MEMORY HIERARCHY
Sequential access uses every fetched cache line; random access wastes most of each. The difference is frequently an order of magnitude.
False sharing destroys performance with no apparent cause — threads writing different variables on one cache line.
SYSTEM CALLS ARE NOT FREE
Many small calls are slower than fewer large ones, because each crosses a privilege boundary.
DRIVERS CAUSE DISPROPORTIONATE FAULTS BECAUSE THEY RUN WITH FULL PRIVILEGE
DEVELOP OPERATING SYSTEMS IN AN EMULATOR
Debugging on real hardware without one is close to impossible — faults reset the machine with no message.
MOST PRODUCTION COMPILERS USE HAND-WRITTEN PARSERS
For better error messages. And register allocation has among the largest effects on generated code quality.
GENERATIONAL COLLECTION WORKS BECAUSE MOST OBJECTS DIE YOUNG
Measure pause times, not only throughput.
ADDRESS ALGORITHMIC COMPLEXITY FIRST, MEMORY SECOND, INSTRUCTIONS LAST
No amount of micro-optimisation fixes a poor algorithm.