R
weil die konsolen chips billiger sind, da sie, im gegensatz zu x86 cpus, nicht darauf ausgelegt sind jeden erdenklichen code, moege er noch so schlecht sein, schnell auszufuehren, sondern es die aufgabe der entwickler ist sauber zu programmieren.
beispiel:
virtual functions sind bei c++ sehr langsam:
x86 loeasung: intel baut eine spiezielle optimierung in die cpus die solche spruenge ueber tables wie normale function calls aussehen laesst.
konsolen loesung: benutz es nicht.
beispiel 2:
atomics sind langsam, insbesondere wenn mehrere atomic variablen auf einer cacheline liegen.
x86 loesung: 3rd level cache der shared ist zwischen den cores, damit selbst das schlechteste was man an code abliefern kann noch mit <50 cycles wegkommt.
konsolen loesung: align atomics auf cachelines, da du sonst pro zugrif mit bis zu 600cycles rechnen darfst
beispiel 3:
unaligned reads sind langsam, trifft auf alle datentypen zu die nicht auf einer natuerlichen address liegen, insbesondere bei 128bit SIMD typen.
x86 loesung: intel optimiert die unaligned read operation, wenn die daten aligned sind, hast du nun die performance wie bei dem aligned-load operator, liegen sie unaligned, ist es nun dennoch ziemlich schnell, dafuer sorgt eine neue shuffle einheit.
konsolen loesung: du bekommst 1. einen interrupt wenn du das machst, 2. die cpu ignoriert die untersten x-bit bei addressen sodass immer aligned gelesen wird, 3. der compiler emuliert unaligned reads, indem er mittels langsammer memcpy aufrufe die bytes auf eine aligned addresse kopiert und dann mit aligned operationen weiter arbeitet.
hier z.B. ein paar benchmarks fuer nicht ganz so schlechten c++ code
http://forum.beyond3d.com/showthread.php?t=36058
du kannst auch benchmarks raussuchen, wo z.b. ein intel atom single core mit arm dual/quad cores abrechnet, und dabei ist die atom cpu bei weitem nicht so stark wie die desktop cpus. auf der anderen seite gibt es software 3d engines die auf GBAs laufen deren arm V7 mit nur 16MHz arbeitet.
aber wir sind an einer saturierung angekommen,
1. wird niemand mehr eine GPU aus dem handgelenk schuetteln die mit denen auf dem desktopmarkt ansatzweise mithalten kann -> alle konsolen werden ne art desktop GPU haben
2. sind die leute mit der graphik zufrieden, es stoert niemanden wirklich wie es hier und dort flimmert und sie begehren nicht wirklich photorealistischerere graphik, weil spiele wie uncharted 3 nunmal schon recht gut aussehen, das meiste ist arbeit der graphiker. von daher kommt es auf das entwicklungstempo an, nicht auf das ausquetschen der letzten performance particle aus jedem prozessor -> konsolen entwicklung naeherst sich dem niveau von desktop spielen und daher wird man wohl auch wieder desktop CPUs als gute kandidaten ansehen (meine persoenliche meinung).