You are going to need to go through your code very carefully making sure that you aren't doing any unnecessary processing and the necessary processing is being done in the most efficient manner possible. Pay particular attention to arrays because inefficiencies there multiply their effect. Also use the execution profiling option to help you identify where the code is spending the time.
The first place to start is with initialization and deinitialization routines. Make sure that you aren't reptatively opening and closing ports or channels. Next, verify all your array handling is managing the data in the most efficient way. In time critical applications like this be extra careful of operations that cause LV to have to manage memory on the fly. In general you w
ant to preallocate memory and update values rather than accumulating data. Finally, be on the lookout for operations that you perform but aren't needed. For example, say the output of a subvi is only used in one frame of a case structure. Make sure the subvi is inside the case where its used so you aren't executing it for cases that won't use its output.
Are you seeing better performance with a built application? Though I have never noticed the effect myself, I have heard that built applications can run slightly faster because they don't include debugging code.
One non-LV related thing to look into is the operating system itself and the overhead it imposes...
Hope this helps,
Mike...