scala程序员应该考虑低级性能吗?

时间:2016-11-09 12:23:03

标签: performance scala low-level

我在嵌入式系统C编程8年后开始学习Scala语言,我很惊讶一些Scala开发人员没有考虑Scala库的内部以及他们的代码是如何执行的由JVM。

有人告诉我,使用一些关于低级Scala内部的知识,以预先优化的方式编写程序并不是一个好习惯,编译器/ JVM开发人员的任务是使事情快速运行。因此,作为前端应用程序开发人员的任务是编写一个易于维护的漂亮可读代码。

我同意这听起来很合理,但它与我作为C开发人员的所有经验完全矛盾。

Scala开发人员应该深入研究Scala库和JVM的内部,并使用这种低级知识来编写代码,正如C程序员通常所做的那样?

2 个答案:

答案 0 :(得分:1)

我的直觉是Scala和C程序是为不同的目的而编写的。 C代码是最紧凑,最快的代码,不是用汇编语言编写的。它可能主要用于系统编程。它可能寿命更长,写入速度更慢,维护更难,需要更高级别的程序员技能(但我手头没有统计数据)。高级语言用于应用程序编程,其中代码需要更快地编写,可能由不太熟练的程序员编写。它需要更频繁地维护。性能有时是一个问题,但多年来硬件成本下降,分配硬件比花费程序员时间优化代码更容易,更便宜。在一些特殊情况下,人们花费大量时间来优化用高级语言编写的应用程序的内部循环。有时,这涉及使用类似于C的技术:分配数组和管理应用程序中的数据,而不是依赖于垃圾收集。当然,这是一个很大的话题。

答案 1 :(得分:1)

在我看来,简短答案是:不,你不应该深入了解Scala及其库的内部。整个想法是拥有高级抽象,允许您编写组织良好,干净且不言自明的代码。

长篇故事: 这真的取决于你想要达到的目标。对于企业应用程序的标准用途,您通常不必担心性能(除非它很难打击您)。 另一方面,如果您编写Scala库并且其他一些客户端将要使用它,您可能希望优化性能并提供高质量的产品。为此目的,几乎必须了解一些内部机制。

尽管如此,如果你在Scala中编写一些东西(在我看来)你应该知道,例如一些集合库的内部 - 它是Scala中一个项目的基本构建块,所以很好了解它。