虽然Scala演员被描述为轻量级,但Akka演员更是如此,显然有一些使用它们的开销.
所以我的问题是,与Actors并行的最小工作单元是什么(假设它可以并行化)?如果存在潜在的延迟或者存在大量繁重的计算,它是否值得?
我正在寻找一个可以轻松应用于日常工作的一般经验法则.
编辑:答案至今让我意识到,我很感兴趣,也许是真正的逆我原来问的问题.所以:
假设用actor构造我的程序非常合适,因此不会产生额外的开发开销(或者甚至比非actor的实现产生更少的开发开销),但是它执行的工作单元非常小 - 是否存在使用演员在性能方面会有什么损害,应该避免哪些?
我的经验法则——对于日常工作——是如果它需要几毫秒,那么它可能值得并行化。尽管事务率高于此(通常不超过几十微秒的开销),但我喜欢远离开销占主导地位的情况。当然,可能需要比几毫秒长得多的时间才能真正值得并行化。您总是必须平衡编写更多代码所花费的时间与运行它节省的时间。
是否使用参与者主要不是工作单元的问题,其主要好处是使并发程序更容易正确.作为交换,您需要根据不同的范例对解决方案进行建模.
因此,您需要首先决定是否使用并发(这可能是由于性能或正确性),然后是否使用actor.后者非常属于品味问题,尽管有了Akka 2.0,我需要很好的理由,因为你可以通过非常小的开销基本上免费获得可分发性(up&out).
如果你仍然想要相反的方法,我们的性能测试的经验法则可能是目标消息处理速率不应高于每秒几百万.
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |