dez#42
"A legegyszerubb pelda pont a tobb processzor mag kihasznalasa. Nem letezik olyan C/C++ fordito, ami magatol optimalizalna a kodot tobb processzor magra, tehat ha egy jatekfejleszto ceg ki akarja az osszes magot hasznalni, akkor bizony alapjaban ujra kell irni a kod egy reszet (hacsaknem mar korabban is tobb szalon dolgoztak)."
Ez egy kicsit más téma, nem optimizáció a szó szokásos értelmében, hanem többszálúsítás, párhuzamosítás.
"Kicsit alacsonyabb szinten megemlithetjuk a processzortipustol fuggo SIMD utasitasokat vagy egyeb nyalanksagokat pl a virtualizacioban, amit az AMD es az Intel mashogy valositott meg."
Na ja, Intelen nincs 3DNow!, viszont az SSE-ket tekintve elég közel állnak egymáshoz.
"Es ez meg csak a jeghegy csucsa, mivel egy jo programozo pl arra is figyel, hogy megfeleloen hasznalja a cache-et a prociban (nem mindegy, hogy ki, mikor, mit, hogyan es hova allokal, ir es olvas), pedig a cache teljesen transzparens meg a fordito szamara is. Erdemes arra visszaemlekezni, hogy ezt kevesbe nemes celokra is kihasznaltak korabban, amikor pont akkorara mereteztek egy-egy benchmarking programot, hogy beleferjen egy bizonyos processzor cache-sebe, ezzel novelve a teljesitmeny azon a CPU-n."
Ez igaz, de itt már rég nem utasításonként kell optimizálni (kézzel), hanem csak egy-egy rutin/függvény méretére figyelni.
"Bezony-bezony, egy jol megirt, nagyteljesitmenyu program bizonyos helyeken eltero kodot futtat eltero processzorokon (pl P4 vs Core 2 Duo)."
Ez is igaz, de ma már ezeket sem kézzel írják asm-ben, hanem a fordítóra bízzák.
BTW, optimizáció vs. optimalizáció: az első angol nyelvterületről jön, a második németről. (Nekem inkább az előbbi jön be. A fordítók szinte mindegyikében is így szerepel.)