我的問題是,如果.csv文件足夠大,map/zipmap步驟(如下)是否會冒着消耗太多內存的風險?我的程序的map/zipmap部分可以消耗太多內存嗎?
我有一個從clojure-csv返回的序列序列。爲清楚起見,以下步驟是故意分開的。換句話說,我將在生產代碼中結合其中一些。
; Process the .csv file
(defn fetch-csv-data
"This function accepts a csv file name, and returns parsed csv data,
or returns nil if file is not present."
[csv-file]
(let [csv-data (ret-csv-data csv-file)]
csv-data))
(def bene-csv-inp (fetch-csv-data "benetrak_roster.csv"))
; Pull out the columns/keys, and
(def bene-csv-cols (map #(cstr/trim %1) (first bene-csv-inp)))
; create the keys.
(def bene-csv-keys (map #(keyword %1) bene-csv-cols))
; Make a sequence of just one of the keys:
(def test-ssns2 (map (fn [x] (:GIC-ID x))
(map #(zipmap gic-csv-keys %1) gic-csv-data)))
謝謝。
回覆:「我會在生產代碼中結合其中一些。」熱點編譯器在內聯方面非常出色,如果你只需要地圖而不是原始的CSV數據,就不需要讓代碼不那麼漂亮,只需要JVM – 2012-08-09 18:59:19