【问题标题】:Shared library loading and performance共享库加载和性能
【发布时间】:2012-07-13 20:29:33
【问题描述】:

我正在用 C/C++ 编写一个服务器端应用程序,它由 1 个主守护进程和几个子进程组成。

我希望子进程非常轻量级,以便可以在没有太多开销的情况下生成/杀死它们(超过操作系统施加的开销)。

我正在构建主守护程序和子应用程序以广泛使用共享库。实际上,主守护进程会加载子应用程序所需的所有共享库,并设置所需的(共享)内存结构等。

我的基本假设是,由于共享库(其中一些巨大)已经由主守护程序加载,子应用程序将能够快速启动并简单地附加到加载的库- 无需加载共享库,从而导致生成时间稍快 - 这个假设是否正确?

[[已添加]]

我正在开发 Ubuntu 10.0.4 LTS

【问题讨论】:

  • 您是否在特定的操作系统环境中工作?您的假设在一般情况下成立,但特定环境可能需要您跳过一些障碍才能获得这种行为。
  • 我认为你的假设是正确的,但找不到参考备份
  • @Gian:请查看我更新的问题。我在 Linux 上工作
  • 还取决于您如何运行这些子进程。叉子还是别的什么?
  • @Mat:我仍处于设计阶段 - 所以我不致力于任何特定的启动过程的方法。我将实施任何性能更高的(如建议和认可的)。

标签: c++ c shared-libraries


【解决方案1】:

共享库的代码段将由所有进程共享,对加载/生成的人没有特别限制。但是,这可能需要不同的时间,具体取决于过程中使用了多少符号,因为这些符号将在加载期间解决。

但是,如果您要分叉,则无需做太多事情,因此启动新二进制文件会很快。

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多