【发布时间】:2015-06-18 06:23:58
【问题描述】:
我知道调用外部程序can,但我不知道它与调用子程序相比有多昂贵。调用成本是指启动程序的开销,而不是执行程序代码本身的成本。我知道成本可能会因使用的语言和操作系统以及其他因素而有很大差异,但我会很感激一些大致的估计。
我希望通过让进程修改其他进程来查看在不允许代码自我修改的语言上模拟代码自我修改的合理性
【问题讨论】:
-
也许对这个影响最大的是你使用的操作系统。我建议您直接尝试一下,即进行一些基准测试。
-
一种中间方法是对某个外部服务器执行remote procedure call(这为您提供了与启动外部程序几乎相同的隔离,但您不会为每个 RPC 调用重新启动服务器)。在某些情况下,您可以根据自己的特定需求轻松编写临时 RPC 服务器。
-
我忘了说RPC也可以去同一台电脑上的一些服务器程序,然后需要的IPC可以很快。细节当然是特定于操作系统的。
-
@BasileStarynkevitch 非常粗略地说,与普通子程序调用相比,远程过程调用需要多长时间?
-
它是特定于操作系统的,并且通常(但不总是)取决于参数数据的大小。在使用管道或 FIFO 或
AF_UNIX套接字进行 RPC 的 Linux 上,您可以获得每秒数百兆字节的 IPC 带宽。如此短的 RPC 调用可能需要几百微秒,但您确实需要进行基准测试。
标签: optimization external