我有一个很大的csv文件(168MB,149K行,125列) . 我想用以下代码得到第三列的总和:

def tot = 0

new File("/path/to/big/file.csv").splitEachLine(";") { row ->
    try {
        tot += row[2].toBigDecimal()
    } catch(Exception e) {}
}

println tot

这需要11秒:

root@front1:~# time groovy test.groovy
8691797.09805144

real    0m10.965s
user    0m9.977s
sys     0m0.500s
root@front1:~#

我有一个用php编写的类似代码,只需2秒即可在同一台机器上获得相同的结果 .

我是否应该在groovy / grails中进行任何调整或更好的代码以获得相同的执行时间?

谢谢

Groovy版本:2.3.8 JVM:1.6.0_29供应商:Oracle Corporation操作系统:Linux