【问题标题】:What function is to small for spawning into an own process什么功能对于生成自己的进程来说很小
【发布时间】:2014-02-28 08:30:41
【问题描述】:

产生一个进程以进行更并行的函数调用没有好处的限制在哪里?

例如,在树结构中进行递归查找时,每个子节点都会向父节点添加一个进程和一个消息调用,只是为了进行简单比较。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    产卵过程和完成工作总是比仅仅完成工作要慢。这在很大程度上取决于您的确切要求。尤其是非功能需求是关键。所以去测量。这很容易。有关更多详细信息,请参阅有关 Profiling 的文档,并且那里还有 3rd 方项目可以简化基准测试。

    【讨论】:

      【解决方案2】:

      产生更多进程并不一定会使任务并行运行。例如,如果您的系统上有 24 个内核,那么任何时候只能运行 24 个进程。

      相反,当您检查树中的一个节点时,最好考虑一下正在完成多少工作。假设节点值表示需要调用以检索值的 url。在这种情况下,为每个节点生成一个进程可能是个好主意。这样可以安排一个进程运行,而另一个进程正在等待对 http 请求的响应。

      【讨论】:

      • 也许我在问这个问题时想到了这个错误,但在我的示例中,在树中查找时,我可以同时进行 24 次查找(如果我有 24 个内核)。如果每个节点上的查找只是为了比较一个值是否可以让所有查找顺序(只是映射到树上)而不是为每个节点生成进程并一次比较它们 24 个.
      • 也许我根本不应该关心这个,因为它只是实现细节,在总速度上不会做太多事情,而且肯定会降低可读性?
      猜你喜欢
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多