Scala actor比Jetlang和Groovy++消息传递都慢?

Alex Tkachman用一个测试基准比较Scala actor、Jetlang和Groovy++消息传递的性能差异,并解释了Scala actor比较慢的原因。

该基准用来测量消息发送和接收的的平均速度。我们选择了众所周知的线程环测试基准的一个变体

  • 有10000个actors,0..9999
  • 当object接收一个消息后将其转发给下一个object
  • 测试一开始,向头500个对象发送字符串“Hi”

总共大概有接近50M的消息被发送和接收,我们记录下来整个过程的时间

测试结果如下:

    Benchmarking results (milliseconds, smaller number the better)

    2155 - Jetlang

    1682 - Groovy++

    47911 - Scala //这是原始数据,根据评论中建议修改之后,数据可达5221ms
                  //但仍比groovy++显慢,Alex说还会就此话题贴文。

Alex认为造成这一结果的原因是Scala模仿了Erlang的行为,而没有使用更适合JVM的消息传递模型。而Groovy++的实现方式与Jetlang基本一样,主要区别是groovy++选择不区分fiber(消息消费者)和message channel(消息发布地),从而内部可以使用一些简单的数据结构。还有就是Groovy++还不支持Jetlang所支持的一些特性,那些特性对效率多少也会有影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值