2

我正在寻找 Windows 上 Qt (v5.3) 中具有高性能的 IPC。在我的最终情况下,我将有 3 个(或更多)生产者进程和一个消费者进程。

在此之前,我使用 1 个生产者线程和 1 个消费者线程进行了一些测试,同时使用了QLocalSocket/QLocalServer示例)和QSharedMemory示例),我很惊讶时间是可比的。

特别是我得到了以下结果(从第一条消息到收到最后一条消息):

发送/写入 1000 字符串消息:QSharedMemory:1020ms,QLocalSocket 1010ms 发送/写入 5000 字符串消息:QSharedMemory:5010ms,QLocalSocket 5090ms 发送/写入 10000 字符串消息:QSharedMemory:10097ms,QLocalSocket 10850ms

问题是:

  • 您是否同意这个结果,或者我的代码中可能有错误?
  • Qt 中是否有一些性能更好的 IPC 方法?

提前致谢。阿瑟86

2014 年 10 月 23 日更新

我花了更多时间来调查这个疑问,并找到了合理的回应。我发现线程之间的上下文切换使用了先前时间的很大一部分。特别是,如果我删除 Thread::msleep(0); 在每个周期结束时,我能够达到更低的计算时间。

例如。

  • 1000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 100 毫秒
  • 5000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 300 毫秒
  • 10000 字符串消息:对于 QLocalSocket 和 QSharedMemory 都小于 1000 毫秒

我认为删除Thread::msleep(0)不是一个好主意。不是吗?你能建议我一些方法来提高睡眠指导的表现吗?

4

0 回答 0