Skrivet av aradove:
Kan du länka till någon bra resurs?
Jag kika på CppCon 2014: Mike Acton "Data-Oriented Design and C++"
Han är väldigt svår att lyssna på, tror jag vet vilken video du menar och det är bara en liten del där som är bra och går att förstå såvida man inte sitter i hans hjärna och hänger med i snacket.
Ett problem med "Data-Oriented Design" är att det ofta är nördar som förstår tekniken, de är inte duktiga på att förklara (de är inte språkligt begåvade, de har annan typ av begåvning).
Han som jag tycker förklarar bäst är troligen Yehonathan Sharvit men det är inte samma sak som att han är duktig, ok enligt mig men ingen stjärna.
https://www.youtube.com/watch?v=Vz9rkr_p3Ts
Första kapitlet i den här boken är bra också: https://www.dataorienteddesign.com/dodmain/node3.html
Skrivet av aradove:
och det som jag tog med mig var att man ska optimera för common case, fokusera på hur du vill transformera data, samt se till att du inte får cachemisses, om det nu är så på L2 cache/RAM nivå till nätverks requests. Datan är det du vill transformera, d.v.s att om du ser datan och vad du vill få ut i slutändan så förstår du problemet.
Mike Acton är för mycket inne i sina "egna" utmaningar inom programmering. Viktigt att förstå.
Annars så de som måste få ut så mycket prestanda som möjligt tvingas till att programmera "data-orienterat", de måste anpassa sig efter processorn och skriva kod som fungerar smidigt i processorn. Så han beskriver sina utmaningar och blandar in lite data orienterat och det blir bara en stor röra.
Det är detta vi programmerare gör, vi översätter en komplex mänsklig värld till något en stenkorkad processor kan förstå. Processorer är otroligt korkade men det lilla de klarar av att göra är de supersnabba på och de gör inte fel.
Viktigt att tänka på det.
Förstår man det så förstår man hur man skriver kod för processorn bättre. Programmerare måste föröka hitta mönster i data människor hanterar som passar processorn och kräver minimalt med kod.
DDD (domain driven design) gör inte det, där tänker man som "människor" gör så långt som möjligt. Det blir mängder med kod för ganska lite funktionalitet och som måste ändras stup i kvarten.
Exempel på DOD är saker som xml, json, csv, sql databaser. Dessa har slagit igenom för att man har ett "mönster" som är applicerbart på väldigt många problem.