C. You're Doing It Wrong. Related Content Browse this Topic: Queue on Reddit Poul-Henning Kamp Would you believe me if I claimed that an algorithm that has been on the books as "optimal" for 46 years, which has been analyzed in excruciating detail by geniuses like Knuth and taught in all computer science courses in the world, can be optimized to run 10 times faster?
A couple of years ago, I fell into some interesting company and became the author of an open source HTTP accelerator called Varnish, basically an HTTP cache to put in front of slow Web servers. Having spent 15 years as a lead developer of the FreeBSD kernel, I arrived in user land with a detailed knowledge of what happens under the system calls. Because, not to mince words, the majority of you are doing that wrong. The first user of Varnish, the large Norwegian newspaper VG, replaced 12 machines running Squid with three machines running Varnish. Before any fundamentalist CS theoreticians choke on their coffees: don't panic!
Performance simulation Notes a. Top 10 Performance Problems taken from Zappos, Monster, Thomson and Co Performance, Scalability and Architecture – Java and .NET Application Performance Management (dynaTrace Blog) For a recent edition of the Swiss Computerworld Magazine we listed our Top 10 Performance Problems as we have seen them over the years when working with our clients.
I hope this list is enlightening – and I’ve included follow-up links to the blogs to help better understand how to solve these problems: #1: Too Many Database Calls The problem we see the most are too many database query per request/transaction. There are 3 specific phenomena to witness More data is requested is than actually required in the context of the current transaction, e.g.: requesting all account information instead of those that we need to display on the current screen.The same data is requested multiple times. Further Reading: Blog on Linq2Sql Performance Issues on Database, Video on Performance Anti-Patterns #2: Synchronized to Death There is no question that synchronization is necessary to protect shared data in an application.
Further Reading: How to identify synchronization problems under load #5: Memory Leaks. Mature Optimization. This article originally appeared in the "Inner Product" column in Game Developer Magazine, January 2006 Last month I described an optimization that needs to be done early on in a project, if it is to be done at all.
This month I expand on the theme of early optimizations, and present a few examples of what I call "Mature Optimization". Every year a fresh crop of young programmers enters the games industry with the wisdom of books and lectures swirling around their heads. One pearl of wisdom is drilled deep into their tender programming muscles; the pearl sometimes known as "Hoare's Dictum": "Premature optimization is the root of all evil" - C.A.R. Unfortunately, in the mind of the freshly minted programmer entering the games industry, this quote seems to turn into: "Early optimization is evil" - Junior Game Programmer, 2005 The legendary Donald Knuth most famously weighed in on this subject when he wrote these often quoted (and often misleadingly punctuated) sentences: There you have it.
Ubiquity - The Fallacy of Premature Optimization.