On Monday, 12 January 2015 at 17:22:27 UTC, Adam D. Ruppe wrote:
On Monday, 12 January 2015 at 13:54:18 UTC, Ola Fosheim Grøstad wrote:
What makes you say that?

try/throw/catch is like 50x slower than doing nothing except returning a value, but D's exceptions still tend to outperform Java and C#; it isn't awful.

I still wouldn't use them for ordinary flow as a general rule though, but I think they work well for cases where you ask a function to do something and it just can't.

Doesn't D still use the standard zero-cost EH that was created for Itanium, where you take the performance hit on unwinding?

I don't know, I'm just thinking about the bemchmarks.

Right, I kinda think that C++ EH is awful outside the context of big iron. It is often avoided.

I think a clean language should find one single way to deal with errors, so having one mechanism that performs well would make for clean programming.

I've suggested many alternatives before, at least 4. And D could do anything the hardware supports. Including having multiple return paths, efficient longjump, implicit errorcode propagation, offsetbased unwinding...

Error handling and GC are perhaps the two issues that are the major weak spots for D. I think the language could be changed somewhat and do both reasonably well (as well as one can with stop-the-world-GC).

Reply via email to