== 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.
