I'd also avoid using create and destroy where possible. You have an overhead of managing resources when doing that, with the OS having to manage RAM. Better if you can to move objects off scene. In my engine I set an object to no space to disable it, and set the mesh invisible. Then when I want it back in, add it to the root ODE space and make the mesh visible. So if you're creating bullets on the fly, try instead having an array of bullets and make them active/inactive that way.