LINUX
Andras Tantos
andras_tantos at yahoo.com
Wed Mar 30 01:06:19 CEST 2005
Hali!
> A kerdes az, amire nincs magyarazat, hogy a java fordito miert forditana
> hatekonyabb kodot, mint egy C fordito, amit az egekig magasztaltak a
> kollegak meg nehany napja is?
A Java fordito nem feltetlen fordit hatekonyabb kodot. A Java nyelv sokkal
tobb informaciot tartalmaz a programozo szandekarol, mint egy C leiras, igy
aztan egy Java fordito sok mindent tud(hat), amit egy C fordito nem
(figyelem, nem C++-rol beszelek!). Hogy csak egy-ket peldat mondjak: az eros
tipusossag, es a pointerek hianya nagyon hatekony aliasing analizist tesz
lehetove, ami agresszivebb regiszter-allokaciot, hositing-ot,
strenght-reduction-t, es hasonlo optimalizaciokat tesz lehetove. Az eros
objektum orientaltsag es az interfeszek hasznalata viszont hatranyt jelent,
hacsak nem hasznal a fordito olyan eszkozoket, mint a de-virtualization es
hasonlok, amiknek C-ben nincs ertelme/megfeleloje.
Az ok, amiert egy virtualis gepes megoldas hatekonyabb *lehet*, mint a nativ
megoldasok, az, hogy a JIT (just-in-time compiler) sokkal tobbet tud(hat) az
eppen aktualis futtatasi kornyezetrol, mint a hagyomanyos forditok. Pl.:
szerinted az NT kernel milyen procira van optimalizalva? Nyilvan valamelyik
intel procira, feltehetoen P-III-ra. De akarmire is, csak *egy fele*
procira. Node ha neked Athon-od van, arra mar maskent kene bizonyos dolgokat
csinalni. Ha P4-esed van, akkor megintcsak maskent, stb. stb. Aprosagok, de
ezekbol ossze johet jopar szazalek.
A problema csak az, hogy a gyakorlat nem ezt mutatja, a virtualis gepes
megoldasok *tapasztalat* szerint sokkal lassabban futnak, mint a nativ
tarsaik. Mint ezt mar irtam, ez igen szomoru...
Udv,
Tantos Andras
More information about the Elektro
mailing list