<br><div class="gmail_quote">2009/6/22 Alin Popescu <span dir="ltr"><<a href="mailto:alinpopescu@live.com">alinpopescu@live.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
Salut<br>Ma gandesc ca daca ai o aplicatie critica, atunci e nevoie de error handling.<br><br>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.<br>
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.<br>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.<br>
Iar daca totusi te incapatanezi si folosesti null = 0x100 atunci vei avea o exceptie si este safe :-).<br></div></blockquote></div><br>Tehnic, pe Linux nu se poate intampla sa iti intoarca NULL malloc-ul. Pe alte sisteme de operare, poate.<br>
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.<br><br>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.<br>
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..<br><br>Cosmin.<br><br>