[Mono-list] Exceptions and error codes.
Thong (Tum) Nguyen
tum@veridicus.com
Wed, 26 Mar 2003 03:48:16 +1200
Hi Phil,
I totally agree. Those are points I didn't make so clear :-).
^Tum
> -----Original Message-----
> From: mono-list-admin@lists.ximian.com [mailto:mono-list-
> admin@lists.ximian.com] On Behalf Of Philippe Lavoie
> Sent: Wednesday, 26 March 2003 3:28 a.m.
> To: Philippe Lavoie; Miguel de Icaza; tum@veridicus.com
> Cc: mono-list@lists.ximian.com
> Subject: RE: [Mono-list] Exceptions and error codes.
>
> Just to add to what I just wrote.
>
> My philosophy with code is that most of the cost is with fixing bugs.
If
> you write maintainable code (readable using consistent patterns
> throughout) backed with good unit tests, then you are minimizing a lot
> the cost of software development.
>
> In open source, it doesn't really matter as the code is written mostly
> by one and for one. However in large projects, code which makes it
easy
> to fix and add stuff is worth a lot more then a speedup of 5 or 10
> assembly lines.
>
> My thoughts (which are worth about 1.2 cents American right now)
>
> Phil
>
> -----Original Message-----
> From: Philippe Lavoie
> Sent: Tuesday, March 25, 2003 10:19 AM
> To: Miguel de Icaza; tum@veridicus.com
> Cc: mono-list@lists.ximian.com
> Subject: RE: [Mono-list] Exceptions and error codes.
>
> I think the original point made was that unless you have profiling
> information to back up any claim that "this part of the software" will
> slow you down. Then use a mechanism which will make your code more
> maintainable.
>
> The example below clearly has performance issues. However if the
> function handle_number_argument below takes 100 ms to process, the 5
or
> 10 extra lines of assembly added by the try/catch becomes meaningless
in
> terms of overall performance. You'd better spend your time improving
> that function then rewriting the parser of Int32.
>
> Sometimes, it could be best to improve the JIT to better handle
embedded
> try/catch statements :)
>
> Just another way of looking at it. I don't think there is a "one and
> true" way. It's all a grey area when you start to mix performance /
> maintainability / readability / philosophy, etc.
>
> Phil
>
> -----Original Message-----
> From: Miguel de Icaza [mailto:miguel@ximian.com]
> Sent: Sunday, March 23, 2003 10:43 PM
> To: tum@veridicus.com
> Cc: mono-list@lists.ximian.com
> Subject: Re: [Mono-list] Exceptions and error codes.
>
> Hello,
>
> You do raise interesting points.
>
> The problem with exceptions is that throwing and catching an
> exception is an expensive operation. Using an exception as a
mechanism
> to return a failure error, when failure is likely to happen is
> inefficient.
>
> Contrast `likely to happen error' with `exceptional condition:
> internal error, or unlikely error to happen'.
>
> Lets consider a sample: a program that uses Int32.Parse to detect
> whether an integer is available, or maybe a string command exists, and
> we are parsing, say, a million records:
>
> for (i = 0; i < one_million; i++){
> string line = readline ();
> try {
> v = Int32.Parse (line);
> handle_numberic_argument ();
> } catch {
> ParseCommand (line);
> }
> }
>
> This is so bad, that you probably want to rewrite the code to
> pro-actively avoid parsing things that are known not to be integers.
>
> It is easy to turn an error-code API into an exception-throwing
API
> with no performance loss. The opposite is not possible.
>
> Miguel
> _______________________________________________
> Mono-list maillist - Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
> _______________________________________________
> Mono-list maillist - Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
> _______________________________________________
> Mono-list maillist - Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.461 / Virus Database: 260 - Release Date: 10/03/2003
>
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.461 / Virus Database: 260 - Release Date: 10/03/2003