We are dealing with an interesting performance issue where our multithreaded program is much slower on a better system (almost 4x slower than it should be). In trying to investigate the cause, I've made a little testing program that simply does a lot of sorting of DataFrames using the Deedle library. This program has an even worse performance (up to 10x, depending on the number of threads), but here something odd happens. When I start dotTrace and select the Launch tab, the already running test program gets about twice as fast. This only happens from the moment that the Launch tab is opened, until dotTrace is closed (regardless of the tabs selected in between); nothing else is done with dotTrace.
Does anyone have an idea what could be causing this? Although starting dotTrace doesn't seem to affect our actual program much, this problem might point towards a crucial part in solving that issue as well.
Of course, any suggestions to what could be causing the problem in general would be welcome as well. Other test have indicated that the system itself is performing fine, but that for some reason there is a much stricter synchronisation going on in our program (mostly in Deedle, but that's also just where a lot of the work is done).
Many thanks in advance for any help.