Application runs faster with visual studio performance analysis

Viewed 5374

I am investigating for how many time it takes for a particular operation to complete. The operation is like the following:

Parallel.ForEach(items, item => SaveScheme(item));

The SaveScheme method works with a database: executes some queries and works with the information. The amount of elements in items collection can be big enough.

When I run this operation, it takes about 20-40 seconds to complete. But when I run it with a profiling turned on, it takes only 3 seconds!

I didn't find any information about this problem. My only guess is that with profiling Parallel.ForEach creates more threads than without it, but I don't know for sure, and even if it's true, I don't know what to do with it.

So, why is that happens and how can I archieve this performance when I run the application without profiling?


UPD. Parallel has nothing to do with this: I tested with simple foreach instead and the operation still completes in 3 seconds!

5 Answers

Since you are using threading in your program, the Windows timer resolution can also be a reason.

Default windows timer resolution is 15.6ms

When you run your application with the profiler, this is reduced to 1ms causing your application to run faster. Checkout this answer

Related