<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
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><BR><HR id="stopSpelling">Date: Mon, 22 Jun 2009 12:32:40 +0300<BR>From: cosminratiu@gmail.com<BR>To: so@cursuri.cs.pub.ro<BR>Subject: Re: [so] assert<BR><BR><BR><DIV class="EC_gmail_quote">2009/6/20 Alin Popescu <SPAN dir="ltr">&lt;<A href="mailto:alinpopescu@live.com">alinpopescu@live.com</A>&gt;</SPAN><BR><BLOCKQUOTE class="EC_gmail_quote" style="padding-left:1ex">
So, my point is, la temele la so era absolut nevoie sa verificam in 'release' toate codurile de eroare? Banuiesc ca raspunsul<BR>
va fii DA!. Este o intrebare semi-retorica.</BLOCKQUOTE><DIV><BR>Assert e folosit pentru a verifica preconditiile, nu pentru a prinde cazurile de
erori normale ce pot aparea in timpul executiei (memorie plina in cazul
asta... bine, discutia e mai lunga pe Linux). In momentul cand <BR>
<BR>
In cazul alocarii memoriei, poti folosi perror("mesaj") pt. ca desi malloc nu e apel de sistem, se seteaza errno la ENOMEM.<BR><BR>Ca sa iti raspund la intrebare, verificatul erorilor in teme este un exercitiu, pentru a va invata Good Programming Practice.<BR>
Intr-un program real, este important sa fii paranoic pentru a avea o aplicatie robusta. De accea assert e destul de inutil pentru ca vrei ca verificatul _erorilor_ ce pot aparea sa ramana si in release.<BR><BR></DIV><BLOCKQUOTE class="EC_gmail_quote" style="padding-left:1ex">

Din cate imi amintesc, assert nu incetineste aplicatia finala, pentru ca este scos odata ce aplicatia este compilata ca release.<BR>
If-ul inseamna hazard de control, sageata albastra de la dreapta la stanga din cartea lui Patterson, a dus la branch prediction si multe complicatii.</BLOCKQUOTE><DIV><BR>Asta este caz de micro optimizare inutila. Procesoarele de azi au branch prediction destul de bun, care poate fi chiar ajutat prin folosirea directivei __builtin_expect (likely si unlikely din kernel). In plus, la cateva sute de milioane de instructiuni pe secunda, un if nu conteaza.<BR>
<BR>Cosmin.<BR></DIV></DIV><br /><hr />check out the rest of the Windows Live™.
More than mail–Windows Live™ goes way beyond your inbox.
 <a href='http://www.microsoft.com/windows/windowslive/' target='_new'>More than messages</a></body>
</html>