Skip to content

Instantly share code, notes, and snippets.

@gerritjvv
Created September 16, 2015 08:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gerritjvv/a9b4ab17f9f4d4b6cdb7 to your computer and use it in GitHub Desktop.
Save gerritjvv/a9b4ab17f9f4d4b6cdb7 to your computer and use it in GitHub Desktop.
efficient clojure line counting
(import '(java.io InputStreamReader FileInputStream BufferedReader))
(import '(java.util.zip GZIPInputStream))
(defn gz-line-counter [^String file-name]
(let [^BufferedReader reader (BufferedReader. (InputStreamReader. (GZIPInputStream. (FileInputStream. file-name))))]
(try
(loop [i 0]
(if (.readLine reader)
(recur (inc i))
i))
(finally
(.close reader)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment