我正在测试 ruby、python 和 scala,看看哪个对大数组有更好的支持。
Ruby (each) -> 84 MB, 2s # a = [];(0...1e7).each{|i| a[i]=i}
Ruby (expand) -> 254 MB, 60s #a = [*(0...1e7)]
Python (numpy) -> 95 MB, < 1s # a = np.arange(0, 1e7)
Python (range) -> 391 MB, < 1s # a = list(range(0, int(1e7)))
Scala (range) -> Memory Limit Exceeded :-) # var a = Range(0, 1e7.toInt).map(_.toInt)
如您所见,使用scala时内存限制超过了,这是什么问题?!!!
--UPDATE
好的,我应该使用
var a = Array.range(0, 1e7.toInt)
但是,如果我想将数组映射到字符串呢?
var b = a.map(_.toString())
这里失败...