Context! Context! Context!<p>This is about game programming, and how to optimize your data to be cache- and prefetch-friendly.<p>If your data doesn't look like game data, or isn't accessed like game data, it won't help and the "pitfalls" aren't.
I've really enjoyed reading <a href="http://bitsquid.blogspot.com/" rel="nofollow">http://bitsquid.blogspot.com/</a> . It runs right from the birth of their game engine right up to the recent acquisition by Autodesk. They are heavy proponents of data-centric design with flat layouts (no pointer graphs jumping all over memory). The result is a game engine where almost anything (from rendering pipelines to physics models to ai) can be changed, compiled and live-updated on a nearby console in under a second.<p>EDIT: <a href="http://bitsquid.blogspot.com/2011/12/pragmatic-approach-to-performance.html" rel="nofollow">http://bitsquid.blogspot.com/2011/12/pragmatic-approach-to-p...</a> is a particularly good overview
We might also think of this as modern architectures being very badly suited for supporting these mechanisms for abstraction. This may indicate an opportunity.
I wouldn't say these are pitfalls of OO. They are merely antipatterns in OO game programming (I might add, with any high-throughput data programming).