== Quote from dsimcha ([email protected])'s article
> One more note:  It would also be greatly appreciated if you would expose a 
> version
> of GC.malloc that returns null on failure instead of throwing an exception.  
> For
> performance, TempAlloc treats out of memory as non-recoverable.  This is 
> necessary
> because, since scope statements are often used to manage freeing, the 
> performance
> hit from having TempAlloc-related functions be throwing would be too large.  
> Also,
> making TempAlloc functions non-throwing by catching outOfMemoryErrors and 
> aborting
> is in itself expensive.
> Furthermore, I just realized (literally while I was writing this post) that 
> C's
> malloc (which I use only b/c it doesn't throw) doesn't always return 16-byte
> aligned pointers like druntime's.  Ideally, I'd like to stop using the C heap 
> and
> start using the druntime heap, but I can't do that until there is a 
> non-throwing
> implementation of GC.malloc.

Never mind as far as this.  I realized that the reason why the try/catch blocks
were costing so much performance is because I was doing them inline and in some
cases putting them around a whole bunch of code.  This was probably killing a 
lot
of compiler optimizations.  When I instead did it the non-stupid way and wrote a
wrapper for malloc, this no longer resulted in a significant performance 
penalty.

Reply via email to