I forgot, it is on 2.2GHz Intel Core2 Duo CPU - it means exception handling takes less than thousand CPU cycles in byte-code and  less than 300 in native code.<br><br><div class="gmail_quote">On Fri, Mar 20, 2009 at 6:33 PM, Hynek Vychodil <span dir="ltr"><<a href="mailto:vychodil.hynek@gmail.com">vychodil.hynek@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">One benchmark is worth of thousand questions ;-)<br><br>-module(exceptiontest).<br><br>-export([test/2, success/0, fail/0]).<br>
<br>test(0, _)-> ok;<br>test(N, F)-><br>    try<br>        ok = ?MODULE:F()<br>    catch<br>
        error:{badmatch, fail} -> fail<br>    end,<br>    test(N-1, F).<br><br>success()->ok.<br><br>fail()->fail.<br><br>Byte code:<br><br>9> timer:tc(exceptiontest,test,[1000000, fail]).<br>{469954,ok}<br>10> timer:tc(exceptiontest,test,[1000000, success]).<br>

{164390,ok}<br><br>Native:<br><br>11> c(exceptiontest, native).<br>{ok,exceptiontest}<br>12> timer:tc(exceptiontest,test,[1000000, fail]).<br>{146526,ok}<br>13> timer:tc(exceptiontest,test,[1000000, success]).<br>

{21573,ok}<br><br>It means about roughly 2 millions exceptions in one second (0.47us)  compared to 6 millions success (external) function calls (0.146us) - one can guess that exception handling takes about 0.32us.<br>In native code it is 6.8 vs 47 millions per second and handling can take about 0.125us. There can be some additional cost for try-catch construct which I haven't measured this way. (Is very low how I remember from past.)<div>
<div></div><div class="h5"><br>
<br><div class="gmail_quote">On Fri, Mar 20, 2009 at 3:43 PM, ryeguy <span dir="ltr"><<a href="mailto:ryeguy1@gmail.com" target="_blank">ryeguy1@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

I actually like that one the best. It's cleanest, and simplest. I<br>
actually thought about something like this, but my mind is still<br>
clouded from other evil languages, where exceptions should be used for<br>
"exceptional" situations (exluding Python).<br>
<br>
Is exception handling cheap in Erlang?<br>
<div><div></div><div><br>
On Mar 20, 10:34 am, Paul Fisher <<a href="mailto:pfis...@alertlogic.net" target="_blank">pfis...@alertlogic.net</a>> wrote:<br>
> Hynek Vychodil wrote:<br>
> > One of Joe's suggestion: program success case code separated from error<br>
> > handling. You can make it in this way<br>
><br>
> > create_user(Email, UserName, Password) -><br>
> >   try<br>
> >     ok = new_email(Email),<br>
> >     ok = valid_user_name(UserName),<br>
> >     ok = new_user(UserName),<br>
> >     ok = strong_password(Password),<br>
> >     ...<br>
> >     _create_user(Email, UserName, Password)<br>
> >   catch<br>
> >     error:{badmatch, email_in_use} -> do_something();<br>
> >     error:{badmatch, invalid_user_name} -> do_something();<br>
> >     error:{badmatch, user_exists} -> do_something();<br>
> >     error:{badmatch, weak_password} -> do_something();<br>
> >     ...<br>
> >   end.<br>
><br>
> +1 Bravo!<br>
><br>
> --<br>
> paul<br>
><br>
</div></div>> _______________________________________________<br>
> erlang-questions mailing list<br>
> erlang-questi...@erlang.orghttp://<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">www.erlang.org/mailman/listinfo/erlang-questions</a><br>
<div><div></div><div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br><br clear="all"><br></div></div><div><div></div><div class="h5">-- <br>--Hynek (Pichi) Vychodil<br><br>Analyze your data in minutes. Share your insights instantly. Thrill your boss.  Be a data hero!<br>
Try Good Data now for free: <a href="http://www.gooddata.com" target="_blank">www.gooddata.com</a><br>

</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br><br>Analyze your data in minutes. Share your insights instantly. Thrill your boss.  Be a data hero!<br>Try Good Data now for free: <a href="http://www.gooddata.com">www.gooddata.com</a><br>