The no-destructor run was actually a little slower than the run with all objects in the block being destructed. But since the only actions are object memory deallocations, I suppose that the destructors are actually fully optimized out, making it essentially the same code. This is good because it's much better to have them in there.