Jeff,
this mainly depends on the "grade of spaghetti" according to the complexity of the application.
The worst case would be bad programming style (normally understood as "spaghetti code") with bad algorithms (Rube Goldberg or even faulty ones everywhere) and the whole application in a single loop.
If you run into a worst case scenario, rewriting would be propably the best.
If spaghetti is the only drawback, everything else is good in the application (good modularization, good architecture itself), you will just refactor the part you are going to change and then implement the new feature.
From your statement regarding the current performance, i asume you are seeing something more like "worst case". Nevertheless, you can give refactoring a try. Just try to exclude the dataacquisition from the rest of the application. If this can be done in a justifiable time, you can change the application without rewrite.
hope this helps,
Norbert B.
Norbert
----------------------------------------------------------------------------------------------------
CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.