Judging from your question and the source code you posted earlier, I'm guessing that using a symplectic integrator might benefit you if you are integrating over long periods of time, because it sounds like the equations you're solving are derived from mechanics. Symplectic integrators are designed to integrate Hamiltonian systems; I don't know if they work well for Lagrangian mechanics. Also, I am not an expert on this topic; my only source for this advice is the book by Petzold and Ascher. The suggestions made by Arnold Neumaier and Pedro are also good places to start.
MATLAB does not include a symplectic integrator built in, so if you decide to use one, you will have to find one written in MATLAB that you trust, or implement your problem in another language (as Arnold Neumaier suggests).
Your source code seems to indicate that you have 10 state variables, and from the little I could tell from your code, the right-hand side function evaluations are extraordinarily complicated for a problem of 10 state variables (compared, say, to examples I've seen in the ODE literature, which tend to be simple). My guess (without having executed your code) is that right-hand side evaluations take a non-negligible amount of time; this guess could be tested by profiling the code, although MATLAB's profiler is not always the most reliable (
see, for instance this post at Abandon MATLAB), and profilers may not always give accurate information (sampling profilers are supposed to yield more accurate information than instrumenting profilers). If a profiler doesn't seem to help you much (i.e., it doesn't give you a good indication of why your program is taking so damn long), you could try "random pausing" (see this post on SciComp by Mike Dunlavey). I don't know how one would pull it off in MATLAB, exactly, so hopefully you won't need to resort to that tactic.
Judging from the way you've written your code, it seems like the way it is written could be very bug-prone (it may not be), and it may be worth checking your code by stepping it through a debugger or unit testing it. I strongly suggest writing your code in a way that makes it easier for other people to read, if only so that it's easier to debug, and thus makes it easier to exclude typos as a possible source of error, so that it's clear that the numerical methods are the primary issue causing the problems you've observed.