3 ms·
I 2000% agree with everything in here except this line: > If you don’t understand the hardware, you can’t reason about the cost of solving the problem. For me
by bob1029 3y ago
I 2000% agree with everything in here except this line:
> If you don’t understand the hardware, you can’t reason about the cost of solving the problem.
For me, "Data-oriented Design" mostly implies "try to use SQL-shaped things". In this context, understanding of the hardware is like seeing another side of the query planner blackbox. You should have a general sense of how many raw bytes you can move in a serialized manner based upon your machines & networks, but I feel trying to directly understand how exactly every H/W resource will be utilized goes against these principles at a certain point.
Most offerings of SQL provide exceptionally-powerful tools that attempt to answer questions like "how long might this query take to run based upon history and/or projected growth?". Is this not "reasoning about the cost of solving the problem"?
For non-trivial domains, focusing only on getting the data model logically clean might be a 100% full-time job. You should always worry about performance after correctness unless you are developing a piece of software where performance is the headline aspect of correctness (game engines, DAWs, etc).
- munificent 3y agoThe context isn't clear from the page, but data-oriented design mostly comes from the game industry where this level of performance often (but not always) does matter. And in that context, they don't mean "data-oriented" in the sense of "declarative like SQL". They mean it in the sense of "how the bytes are arranged in memory". One of the primary motivations is being able to use the CPU cache well.
- bob1029 3y agoThe context is absolutely clear. Data is data. You are simply biased towards a particular domain.
- munificent 3y agoYour comment reads like it's arguing with me, but I don't understand what you're trying to refute.