QSharedMemory和QLocalSocket:性能问题

时间:2014-10-23 08:28:37

标签: multithreading performance ipc qt5 qlocalsocket

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

在此之前,我使用1个生产者线程和1个消费者线程进行了一些测试,使用QLocalSocket/QLocalServerexample)和QSharedMemoryexample),我有对于时代具有可比性感到惊讶。

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

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

问题是:

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

提前致谢。 arthur86

更新23/10/2014

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

例如

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

我认为删除Thread::msleep(0)并不是一个好主意。不是吗? 你能建议我用睡眠指令改善表现的一些方法吗?

0 个答案:

没有答案