IPC 的用途是什么?是否可以使用 IPC 在进程之间发送较大的 JSON 块(数百个字符)?我是否应该尝试使用 IPC 发送尽可能小的消息,或者减少消息大小所带来的性能提升是否不值得?
IPC 的用途是什么?是否可以使用 IPC 在进程之间发送较大的 JSON 块(数百个字符)?
IPC 的核心正如其表面所言。当您需要在进程之间传递信息(无论是什么)时,可以使用它。该主题非常广泛,从技术上讲包括分配共享内存和手动进行通信,但考虑到问题的语气和标签,我假设您正在谈论操作系统提供的设施。
Wikipedia 在讨论如何使用 IPC 方面做得非常好,我认为我不能做得更好,所以我将专注于第二个问题。
我是否应该尝试使用 IPC 发送尽可能小的消息,或者减少消息大小所带来的性能提升是否不值得?
这听起来有点像微优化。我不能明确地说,因为我不了解 Microsoft 和 Apple 的源代码,而且我真的不想深入研究 Linux 内核的 IPC 实现,但是,这里有几点:
netstat
。当该可执行文件运行时,需要分配内存,需要从磁盘加载进程,并且操作系统需要执行的任何地址修复都需要在进程启动之前完成。这一切完成得如此之快,以至于你几乎没有注意到。在 Windows 上,netstat
约为 40k,几乎立即加载到内存中。 (记事本,另一个快速加载程序的大小是该大小的 10 倍,但它仍然会在很短的时间内启动。)如果 IPC 位于同一系统上的进程之间,我认为不值得花费大量精力从消息中删除字节。让您的消息易于调试。
如果通信发生在不同机器上的进程之间,那么您可能需要考虑一些事情,因为花费了大量时间来调试问题,而使用更好的数据格式、几十毫秒的额外传输时间本来可以很简单不值得让数据更难解析/调试。记住优化的三个规则1: