C nebo ASM?

Bc. Marek Pavlu pavlu@HWserver.cz
Středa Květen 27 03:14:35 CEST 2009


Zdravim, 

Nemam moc casu, tak reakce moc pozde:). 

Pocet instrukci se rozsiruje skoro co dva roky na nasledovnicich x86:). 
Navic Intel architektury a AMD architektury jsou ruzne, takze 
optimalizace jsou zavisle na osazenem procesoru. 


V zasad ano, z vlastni praxe, protoze se venuji optimalizaci numerickych
vypoctu s pomoci SSE instrukci. 
Tech jeste neni zas tak moc a presto optimalizace vede na inkrementalni
proces, kdy se hleda vhodne reseni 
a ne vzdy, to co se jevi jako na prvni pohled "optimalni" reseni, je nutne
optimalni nebo optimalnejsi:). 
A vzhledem k tomu, ze mi jde o vypocty v radu desitek hodin nebo dnu, tak
nestaci byt jen optimalnejsi nez prekladac:). 
A to musim podotknout, ze jsem rad, ze jde jen o Intel stroje, takze mam
jsitotu, ze novejsi procesor bude spravne instrukce mit:)

a nemusim uvazovat prenositelnost na AMD, to by bylo jeste otravnejsi a
casove vice narocnejsi:))). 


Odkud se berou ty dokonale prekladace? 
No asi se budete divit, ale prekaldace nepisi lidi jen tak od stolu, pracuji
na nich casto hejna programatoru, 
Kteri delaji jen tuto jednu cinnost a ti se prave musi zabyvat tim, ze
hledaji casto se vyskytujici konstrukce 
a k nim hledaji optimalni postup reseni a delaji to jako full job. 

Kdezto kdyz budete delat nejaky program na zakazku, tak pokud to nebude
primo v zadani, ze musite dosahnout nejakeho optimalniho vysledku,
rychlejsiho nez neco xyz, tak si vyberete jednodussi cesticku vedouci k
cili:). A abyste neumrel hlady, urcite to nebude ta nejoptimalnejsi:).

Proto osobne radeji verim u beznych probelmu kvalitnimu prekladaci a pro
velmi specialni veci a po velmi specialni ucely pak optimalizuji:).

Nicmene je casto casove mnohem efektivnejsi optimalizovat primo v C/C++ nez
jit do asm. 
Osobne kdyz se po case vratim ke kteremukoliv svemu kodu a dostatcne dlouho
se v tom hrabu, tak vzdy najdou jeste efektivnejsi cesticku:),

hlavne v pripade C++:).Takze kdyz rikate, ze staci jen, aby to bylo
rychlejsi nez prekladacem, tak musite vzit za dobre i kvalitni prepracovani
kodu

ve vyssim jazyku:). 

Vyvojar je nucen prechazet mezi rodinami uz jen proto, ze treba nektere
casem zanikaji nebo  nejsou dale rozvijeny 
nebo nemaji jiz potrebny potencial. Vzdyt se podibvejte na tu explozi
jednotlivyxh rodin mcu u mnoha vyrobcu za poslednich deset let:).

Navic jsme v kratke dobe preskakali z 8 az na 32 bitu u velmi dostupnych
mcu. 
Cena pameti je smesna, vykon procesoru roste a trh si zada obetinu:), chce
mit vyrbek za nekratsi cas v potrebne kvalite a asm,

tak cim dal, tim vic jde stranou a to uz jen proto, ze dnes vyrobce mcu/cpu
mez podpory C prekladace muze skoro zapomenout na to,

ze se prosadi na trhu a mnohde to tahnou uz tak daleko, ze prekladac je i
zdarma nebo velmi levne... 
Kdyz se podivate na Analog, tak nabizi DSP procsory s podporou C/C++ :). 

Pro sektor, kde se tradicne tvrdi/tvrdilo, ze jedina spravna cesta je asm:).


S pozdravem, 
                Marek Pavlu 



-----Original Message----- 
From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
Behalf Of Jan Waclawek 
Sent: Friday, May 22, 2009 5:19 PM 
To: HW-news 
Subject: RE: C nebo ASM? 

> zcela nesouhlasim, ze program ve vyssim jazyce je nutne pomalejsi 
> nez verze napsana zkusenym programatorem:). 
> To plati mozna pro jednoduche procesory, kde optimalizace nejsoub uplne na

>spici v oboru a 
pro kratke programy, ale jak roste slozitost, tak clovek neni napr. na PC 
schopen 
>zvazit veskere mozne varianty pri poctu instrukci na procesorech
dostupnych. 

To mate z vlastnej praxe skuseneho programatora v asm, alebo ste si to
niekde precitali? 

>protoze musite prozkoumat VSECHNY varianty reseni! 

A preco by som musel? Staci, ak navrhnem jednu variantu, ktora je rychlejsia
nez co vyplodi prekladac. 

Suhlasim, ze u zlozitejsieho programu to moze byt neprakticke, ale obvykle
ide o klucove algoritmy. Spominam si, je to uz par rokov, ako mi jeden znamy
spominal, ze rucne optimalizuju algoritmy na realtime kodovanie videa, to
bolo na nejakom Pentiu, snad II, to uz bol superskalar takze to trivialne
urcite nebolo. A cudujsasvete, robili to ludia. Asi by to neboli robili,
keby to urobil optimalnejsie nejaky prekladac, vsak?


Napokon, odkial sa vlastne beru tie "dokonale" prekladace? 


> Ale u MCU asi jeste pravdu mate, ac pri poctu rodin procesoru i u jednoho 
vyrobce, 
> kde vyvojar nakonec musi prechazet mezi rodinami, tak nikdo nema v hlave 
presne vsechny instrukce a varianty instrukci 
> a casovou slozitost. Takze toto tez takove tvrzeni silne oslabuje:)... 

A precoze by mal prechadzat vyvojar medzi rodinami mcu? 

wek 


_______________________________________________ 
HW-list mailing list  -  sponsored by www.HW.cz 
Hw-list@list.hw.cz 
http://list.hw.cz/mailman/listinfo/hw-list 



  _____  

avast! Antivirus <http://www.avast.com> : Odchozi zprava cista. 


Virova databaze (VPS): 090526-0, 26.05.2009
Testovano: 27.5.2009 3:14:35
avast! - copyright (c) 1988-2009 ALWIL Software.






Další informace o konferenci Hw-list