Если совсем упростить:
(defn run []
(let [rt (Runtime/getRuntime)
cmd (.exec rt "zcat total.sql.gz")
is (.getInputStream cmd)
iw (io/reader is)]
(count (line-seq iw))))
Будет
images.core> (doseq [_ (range 0 10)] (time (run)))
"Elapsed time: 36399.850425 msecs"
"Elapsed time: 36966.983332 msecs"
"Elapsed time: 36770.510386 msecs"
"Elapsed time: 37664.990132 msecs"
"Elapsed time: 36613.551963 msecs"
"Elapsed time: 37488.506581 msecs"
"Elapsed time: 36573.975606 msecs"
"Elapsed time: 36705.511801 msecs"
"Elapsed time: 37024.23245 msecs"
"Elapsed time: 36782.809412 msecs"
И память не растёт - около 1.5Гб как и в начале.
В консоли:
images % zcat total.sql.gz | time wc -l
16586135
wc -l 0.78s user 1.53s system 6% cpu 33.898 total
и
images % pigz -dc total.sql.gz | time wc -l
16586135
wc -l 0.62s user 1.29s system 12% cpu 14.708 total
2015-12-08 22:39 GMT+02:00 Close Screen <
close....@gmail.com>:
> Не, ну я, по крайней мере, понял, что так не должно быть. Где-то косяк у меня, видимо.
>