Q:

Performance averaging datasets

I have a daemon who is getting a file with X amount of data from 31 EEG Channels, from a server each 2 minutes, writing to a MySQL Database the time of start getting the file, and time to write the averaged data into disk, and i found that there is Y time that looks like the average time to process the file, the problem i have, is that some runs, that time goes below half the time D: and the results are the same... the processes are running in threads, so, my questions are:

Should i assume that the random OS assigned a complete empty task
processor to that thread, and ran twice as fast as other threads? 
How could i tell the difference?

Runs below half time of relative average time

First node: 24/600 runs.  
Second node: 50/600 runs.

The nodes don't have any other process running.
Tried to force garbage collector in between the process itself to release memory, same results.
Here is one node run number at horizontal axis, vs time in sec. took the run 

(Average 87.13)
Second test on another node ran as follow:

(Average=85.5)
A little bit slower at the relative average, but more random 1/2 time with a better average performance.
If you are downvoting at least make a comment why is not a valid question, so i wont ask something like this again ¬_¬

A:

i can't tell if it's really a contention issue, like usr answer, but it was writing the answer file, the string buffer i was using was too slow to perform the data aquisition, i changed from:
    System.IO.StreamWriter sfile =   new System.IO.StreamWriter(path+file);
    for (int x = 0; x != chans; x++){
       for (int xx = 0; xx != maxsize; xx++){
           sql += data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n";
       }
       sfile.Write(sql);
       sql = "";
     }

To:
    System.IO.StreamWriter sfile =   new System.IO.StreamWriter(path+file);
    for (int x = 0; x != chans; x++){
       for (int xx = 0; xx != maxsize; xx++){
           sfile.Write(data[x, xx] + "," + xx.ToString() + "," + tes + "," + x.ToString()+"\n");
       }
     }

Looks like the buffer wasn't a very good choice... Now all the tests are running in around*strong text* 16 sec. instead of 35 (at very lucky state) to 92 seconds (average)

