我有一个守护程序,它从31个EEG通道获取一个包含X量数据的文件,每2分钟从服务器获取一个文件,在开始获取文件时写入MySQL数据库,以及将平均数据写入磁盘,我发现Y时间看起来像处理文件的平均时间,我遇到的问题是,有些运行,时间低于一半时间 D:和结果是相同的...进程在线程中运行,所以,我的问题是:
我应该假设随机操作系统分配了一个完整的空任务 处理器到那个线程,运行速度是其他线程的两倍?
我怎么能分辨出来呢?
运行相对平均时间的一半时间
节点没有运行任何其他进程。
试图在进程本身之间强制垃圾收集器释放内存,结果相同。
这是水平轴上的一个节点运行编号,以秒为单位的时间。跑了
(平均87.13)
另一个节点上的第二次测试运行如下:
(平均值= 85.5)
相对平均值略慢一点,但随机时间更长,平均表现更好。
如果你发誓至少发表评论为什么不是一个有效的问题,所以我不会再问这样的事情¬_¬
答案 0 :(得分:0)
我无法判断它是否真的是一个争用问题,比如usr的答案,但它正在编写答案文件,我使用的字符串缓冲区太慢而无法执行数据采集,我改为:
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 = "";
}
要:
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");
}
}
看起来缓冲区不是一个很好的选择...现在所有测试都在* 强文本 * 16秒左右运行。而不是35(非常幸运的状态)到92秒(平均值)