Commits

Sebastien Mondet committed 5fdd795

Try to optimize lwt_count_lines

Comments (0)

Files changed (1)

 
 let lwt_count_lines ~buffer_size file =
   let count = ref 0 in
+  let read_line i =
+    Lwt.catch (fun () -> Lwt_io.read_line  i >>= fun l -> return (Some l))
+      (fun _ -> return None) in
   Lwt_io.with_file ~buffer_size ~mode:Lwt_io.input file (fun i ->
     let rec loop () =
-      Lwt.catch 
-        (fun () ->
-          Lwt_io.read_line i >>= fun _ ->
-          incr count;
-          loop ())
-        (fun exn -> return ()) in
+      read_line i
+      >>= function
+      | Some s -> incr count; loop ()
+      | None -> return () in
     loop ())
   >>= fun () ->
   return (!count / 4)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.