【发布时间】:2011-05-09 14:58:52
【问题描述】:
我在几个地方看到过类似的声明:
“Scala 编译器在编译后的代码中尽可能使用 Java 数组、原始类型和本机算术” (在 Scala 书中编程)。 但实际上我没有看到这一点,例如在下面的代码中,scala 类型比 java 类型使用更多的内存(我使用 totalMemory 和 freeMemory 方法计算):
long[] la = new Array[java.lang.Long](1024 * 1024);
for(i <- 0 until la.length)
la(i) = new java.lang.Long(0);
val La = new Array[Long](1024 * 1024);
for(i <- 0 until La.length)
La(i) = 0l;
mem_used (java long):>> 28.811M
mem_used (scala long):>> 36.811M
我意识到 scala Any 类型有额外的开销,但是优化发生在哪里?
【问题讨论】:
-
您测量内存使用的方法一定是错误的。你得到的结果是荒谬的。
-
除了提到的其他问题之外,Scala 程序很有可能正在从 Scala 库中引入其他类。
标签: optimization scala types primitive