要正确回答这个问题,您需要问自己额外的问题:
你确定带有模板的C ++代码比Scala代码更好吗?现代基准测试表明Java在矩阵求逆上比C ++更快。这主要是由于VM的改进以及硬件的改进。
与处理非托管内存,悬挂指针以及由于C ++编码导致的错误和错误增加相比,使用更快的矩阵工具可以获得多大的业务收益?
如果问题可以在Scala中以小规模满意地解决,并且差异仅在大规模上变得显着,那么将问题(矩阵/向量乘法)划分为可以在其中执行的不同任务是不合理的。平行?
个人提示:我几乎没有与Joshua Bloch讨论过电子邮件,Joshua Bloch是有史以来最有影响力的Java开发人员之一,也是Effective Java的作者,他向我指出了一个有趣的演讲,Brian Goletz(Java Concurrency in Practice的作者,非常有影响力) Java世界也是): 不是你父亲的冯诺依曼机器:一个速成课程 现代硬件
如果你得出的结论是好处并且这很重要,并且将来你的问题siz不会增长,这样你就不需要受益于多核执行,你可能需要保留在C ++中。在另一种情况下,请查看自2.10-M3以来可用的Scala宏。
*额外:在使用运行在VM顶部的语言(如Java或C#)时,避免使用中间变量并没有多大意义。实际上,正如您指出的那篇文章正确描述的那样,JVM如何将Java字节码转换为汇编程序与JIT存在一定的危险。您可以手动运行的许多优化已经由JVM应用,如果您采取预先声明方法和变量FINAL的预防措施,那么大多数推理都是无用的。 *