A funny thing happened over lunch. My test finished running and the results weren’t what I expected. Having an embarrassingly parallel problem and a CPU pegged at 800%, you’d expect an 8x speed-up. That’s not at all what happened. We ended up with about 3x improvement. Since our CPU is pegged at 800%, it’s not a synchronization problem. Having been down this road a time or two, I was fairly certain of the culprit but took a moment to prove it. It wasn’t due to file I/O or anything like that (since none of that stuff was present). With a little use of oprofile (which deserves its own post, one day), I could tell the time was spent in user space, and not the kernel, which removes things like page zeroing or page faulting. Cache misses, on the other hand, are “assigned” to the user process.
The naive voter votes for president on the basis of whether the candidate reminds the voter of herself and can field dress a moose. The sophisticated voter carefully evaluates policy positions, looks beyond partisanship and parochialism, and then votes on the basis of whether the candidate reminds the voter of herself and can field dress a moose.
The strategic voter looks around the bend to anticipate how other voters are likely to behave, and then tries to game the system for maximum influence, going with the moose-dressing thing to break a tie. The perverse voter - so highly evolved that only a Ph.D. or a pundit is likely to qualify - goes the strategic voter one better, going around the bend altogether.
Suppose, then, that you are a perverse voter and in 2008 you want to...
* Restore the Republican Party's health. Vote for: Barack Obama.