Hi all - Newbie question: I'm wondering what's the most efficient way to read in a file line by line? I wrote a routine in both python and ocaml to read in a file with 345K lines to do line count and was surprised that python's code run roughly 3x faster. I thought the speed should be equivalent and/or somewhat in ocaml favor, given this is an IO-bound comparison, but perhaps Python's simplistic for loop have a read-ahead buffer built-in, and perhaps ocaml's input channel is unbuffered, but I'm not sure how to write a buffered code that can do a line by line read-in. Any insight is appreciated, thanks ;) yc Python code: # test.py #!/usr/bin/python file = <345k-line.txt> count = 0 for line in open (file, "r"): count = count + 1 print "Done: ", count OCaml code: (* test.ml *) let rec line_count filename = let f = open_in filename in let rec loop file count = try ignore (input_line file); loop file (count + 1) with End_of_file -> count in loop f 0;; let count = line_count <345k-line.txt> in Printf.printf "Done: %d" count;; Test $ time ./test.py Done: 345001 real 0m0.416s user 0m0.101s sys 0m0.247s $ ocamlopt -o test test.ml $ time ./test Done: 345001 real 0m1.483s user 0m0.631s sys 0m0.685s