[so] assert
Cosmin Ratiu
cosminratiu at gmail.com
Mon Jun 22 14:09:29 EEST 2009
2009/6/22 Alin Popescu <alinpopescu at live.com>
> Salut
> Ma gandesc ca daca ai o aplicatie critica, atunci e nevoie de error
> handling.
>
> Pe de alta parte daca esti in user space si apelezi un malloc sau functii
> de sistem, atunci chiar nu vad cum te-ar putea ajuta branch prediction.
> Problema cu branch prediction este ca daca se intampla sa greseasca, atunci
> va trebui sa goleasca instruciunile care se afla deja in pipeline. Deci se
> vor pierde cateva cicluri procesor.
> Iar daca se intampla sa iti returneze null sau altceva decat ceea ce te
> asteptai, singura masura pe care o vad sa o poti lua este sa afisezi un
> mesaj si sa inchei executia.
> Iar daca totusi te incapatanezi si folosesti null = 0x100 atunci vei avea o
> exceptie si este safe :-).
>
Tehnic, pe Linux nu se poate intampla sa iti intoarca NULL malloc-ul. Pe
alte sisteme de operare, poate.
Aici nu era vorba doar de malloc, ci de toate nenumaratele posibilitati ca
lucrurile sa mearga prost (gandeste-te la partea de retea de exemplu), caz
in care assert e gresit. Asta sustineam eu.
Iar despre branch prediction, in continuare sustin ca este inutil sa micro
optimizezi avand in vedere in primul rand branch prediction-ul. Da, se poate
intampla sa dea chix. Dar oricum daca iti pasa de branch prediction, esti
intr-o sectiune de cod critica unde nu faci malloc-uri sau apeluri de
sistem.
Daca citesti articolul lui Ulrich despre memorie, o sa vezi ca felul cum e
folosit cache-ul are un impact mult mai mare decat branch prediction..
Cosmin.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090622/bbe4d588/attachment.htm>
More information about the so
mailing list