【问题标题】:Does Scala achieve good performance on Android? (June 2011)Scala 能否在 Android 上取得良好的性能? (2011 年 6 月)
【发布时间】:2011-09-07 02:41:40
【问题描述】:

我对 scala 很陌生,发现它的许多想法都非常有吸引力。我刚刚发现了scala for android 项目,我想知道它是否可以运行得很好,甚至可能比java 更好?

即使处理器目前主要是单核按顺序执行类型,是否可以期望它比 java 做得更好?

如果有人有任何示例或经验可以分享,请分享!

【问题讨论】:

  • 哦!刚刚注意到this related question
  • 相关问题是 2 年前的问题,也许在您的标题中添加一个(2011 年 6 月),这样我们就可以跟踪 scala/android 随时间的变化?

标签: java android scala concurrency


【解决方案1】:

唯一的“滞后”是 apk 的大小,但如果您使用 ProGuard 之类的东西,它只会多出 15k/25k 左右,根本没有什么意义。至于性能,因为我所看到的是相同的。我的意思是,它并没有更糟(就像 Clojure 一样,是动态类型的),但我认为它与 Java 相同。

【讨论】:

  • 虽然 Clojure 是否更实用尚有争议,但这与相对性能无关。不同之处在于 Clojure 是动态类型的,而 Scala 是静态类型的。
  • 更实用的样式通常会导致更多的垃圾创建/收集,并以这种方式影响性能。 Scala 很不错,因为可变变量很自然地可以在性能很重要的地方使用,而函数式风格可以在其他地方使用。
  • 但是 Scala 使用的内存比 Java 多一点(当以惯用方式使用时)。
【解决方案2】:

是的,确实如此。但要减小包大小,请使用 Proguard。

如果你使用 SBT,已经有一些插件可以自动化整个过程。

【讨论】:

    【解决方案3】:

    与大多数与性能相关的问题一样,正确答案是“视情况而定”。我还不是 Scala 专家(还),但从我目前所见,它将是面向未来的——例如,使用 Scala 构建以获得更好/更容易的多核支持——因为这是迅速普及的趋势,双核和四核处理器在高端智能手机中迅速普及。对于不能真正做很多可以并行化的事情的单核和“简单”应用程序,我猜性能会相同或更差。然而,性能并不是一切,特别是对于原型或一次性应用程序而言 - 易于编码和开发速度更为重要,如果您熟悉 Scala,它可以提供帮助(由于更少的代码和更智能的构造)。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 2015-08-21
      • 2021-10-13
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 2020-12-21
      相关资源
      最近更新 更多