-1

我有一个守护进程,他每 2 分钟从一个服务器从 31 个 EEG 通道获取一个包含 X 量数据的文件,在开始获取文件的时间以及将平均数据写入磁盘的时间写入 MySQL 数据库,以及我发现有 Y 时间看起来像是处理文件的平均时间,我遇到的问题是,有些运行时间低于D 时间的一半:结果是一样的......进程正在运行在线程中,所以,我的问题是:

  1. 我是否应该假设随机操作系统为该线程分配了一个完整的空任务处理器,并且运行速度是其他线程的两倍?

  2. 我怎么能分辨出区别?

运行时间低于相对平均时间的一半

  • 第一个节点:24/600 次运行。
  • 第二个节点:50/600 次运行。

节点没有任何其他进程正在运行。

试图在进程本身之间强制垃圾收集器释放内存,结果相同。

这是水平轴上的一个节点运行数,与以秒为单位的时间。跑了

是时候结束这个过程了

(平均 87.13)

另一个节点上的第二次测试运行如下:

第二节点测试

(平均=85.5)

相对平均慢一点,但随机 1/2 时间具有更好的平均性能。

如果您不赞成至少发表评论,为什么不是一个有效的问题,所以我不会再问这样的问题了 ¬_¬

4

1 回答 1

0

我不知道这是否真的是一个争用问题,比如 usr answer,但它正在编写答案文件,我使用的字符串缓冲区太慢而无法执行数据采集,我从:

    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 秒(平均)

于 2013-02-04T08:25:09.487 回答