IPC的目的是什么类型的使用,是否可以在使用IPC的进程之间发送更大的JSON(数百个字符)块?我应该尝试使用IPC发送尽可能小的消息,还是减少消息大小所带来的性能提升不值得付出努力?
答案 0 :(得分:5)
IPC的目的是什么类型的使用,是否可以在使用IPC的进程之间发送更大的JSON块(数百个字符)?
在它的核心,IPC就是它所说的。当您需要在流程之间传递信息时,它就是一种工具,无论它是什么。主题非常广泛,技术上包括分配共享内存和手动进行通信,但考虑到问题的基调和标签,我假设您正在谈论操作系统提供的设施。
Wikipedia在讨论如何使用IPC方面做得非常好,而且我认为自己可以做得更好,所以我将专注于第二个问题。
我是否应该尝试使用IPC尽可能小地发送消息,或者减少消息大小所带来的性能提升是否值得付出努力?
这有点像微优化。我不能肯定地说,因为我不知道微软和Apple的源代码,我真的不想深入了解Linux内核的IPC实现,但是,这里有几点:
netstat
。当运行该可执行文件时,需要分配内存,需要从磁盘加载进程,并且在进程甚至可以启动之前完成修复操作系统需要执行的任何地址。这样做很快,你几乎都注意不到。在Windows上netstat
约为40k,它几乎立即加载到内存中。 (记事本,另一个快速装载机是这个尺寸的10倍,但它仍然会在很短的时间内启动。)如果IPC在同一系统上的进程之间,我不认为从您的消息中削减字节值得花费大量精力。使您的信息易于调试。
如果在不同机器上的进程之间进行通信,那么您可能需要考虑一些事情,花了很多时间来调试问题,这些问题本来可以很简单,数据格式更好,几十毫秒传输时间不值得使数据更难解析/调试。请记住优化的三个规则 1 :