并发模式对比: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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先说一下Actor Model,作为一种进程或者线程间的通信模型,一般来说有两种选择,一种是CSP,比如Go语言...
    墨弈阅读 3,417评论 0 51
  • 阿玥, 今天是给你写的第50封信了。 今天也是期末考试第一天,一考完数学,就和同学们对答案,结果已经扣掉11分了。...
    芳草如茵茵阅读 130评论 1 1
  • 不知道你发现没有,社会有这么一种现象,似乎影星歌星的社会地位比科学家的地位高,或者认为他们比科学家更耀眼、更受欢...
    舒一点阅读 237评论 0 0
  • 幽兰开雅室,暗送淡香知。 情逸心宽处,闲吟醉酒诗。 作者王永豪(注:新韵)
    王永豪阅读 805评论 2 8
  • 文/ 蓝山 自从使用微信以来,我们一直相处的不错,以至于不久前,为了方便文件传送,我又申请了一个新的微信号。 不巧...
    蓝山日记阅读 256评论 0 1