Scala的方法性能(收集或的foreach或其他)通过插座循环?(Scala method per

2019-10-17 05:38发布

这里有两种定义都获得相同的结果:

  def sendTrigger(teamId:Long, data:String) {
    EngineSync.browserSockets.collect{ case ((i,(u,t)),s) => if(t==teamId) { s.send(data) } }
  }

  def sendTrigger(teamId:Long, data:String) {
    EngineSync.browserSockets.foreach{ case ((i,(u,t)),s) => if(t==teamId) { s.send(data) } }
  }

发生了什么事是我通过套接字的列表循环和过滤它们发送数据。 作为一个新手到Scala的,我关注性能时,这个开始扩展。 从我了解foreach与其它方法相比表现较差,没有人知道是否collect会过得更好,或者如果这是错误的做法完全?

Answer 1:

通过公平大小的收集与执行网络IO循环(在阻塞时至少)是完全不同的规模化经营 ,所以我不会担心在这个阶段表现issures。

如果你真的关心性能大规模缩放时:

  • 使用NIO的异步IO插座
  • 结束语套接字访问逻辑内部Actor (也许使用Future S IN客户隐藏演员)
  • 甚至就饶了自己的时间和使用阿卡的IO模块


文章来源: Scala method performance (collect or foreach or other) looping through sockets?
标签: scala