You should take a good look at the advanced documentation for NDSolve at http://reference.wolfram.com/mathematica/tutorial/NDSolveOverview.htmldocumentation for NDSolve. NDSolve allows you to choose from many methods and you can tweak them in many ways. I think it will be very hard to beat the performance that is possible with the built in NDSolve.