并发模式对比:akka和goroutine

模式 平台 占用内存大小 轻量否? 同步机制 分布式
akka(actor) JVM 400 Bytes 消息传递 支持
goroutine Native 2K Bytes 消息传递 不支持
Java Thread JVM 1M Bytes 共享变量 不支持

计算密集型性能对比

通过级数计算PI的值,来比较Java线程,akka和goroutine之间的性能差异。

测试环境:

  • 1.4Ghz intel core i5 双核
  • 内存8G
akka-go-thread.png

结果分析

从以上的性能对比过后,发现在计算密集型的场景下,轻量与不轻量并没有产生性能上的巨大差异。这是为什么呢?问题就在计算密集型上,每个Actor或者goroutine或者Thread往往从创建到计算完成后被销毁,时间跨度上都很小,计算任务被提交之后,cpu足够快,往往不等被争夺cpu就计算完成,所以上下文切换几乎没有。而且Java线程通过线程池来维护线程,避免了创建和销毁线程的额外开销。

todo

IO密集型

完整代码

akka
goroutine

你可能感兴趣的:(并发模式对比:akka和goroutine)