在几个地方我都看到了类似的声明:斯卡拉“原始”优化
“Scala编译器使用Java数组,基本类型,和本地运算在可能的编译代码” (编程在斯卡拉书)。 但在实践中我没有看到这一点,例如在下面的代码,阶类型是使用比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的长):>> 28.811M
mem_used(阶长):>> 36.811M
我认识的任何类型都有额外的开销阶,但如果是优化发生?
您的测量内存使用情况的方法必须错误。你得到的结果是无意义的。 – 2011-05-09 15:29:33
除了上面提到的其他问题,Scala程序从Scala库中提取额外的类是很有可能的。 – ziggystar 2011-05-09 16:32:19