Have you tried using the profiler? Where is the bottleneck?