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())
ここで失敗…