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