caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Mattias Waldau" <mattias.waldau@abc.se>
To: "'Siegfried Gonzi'" <siegfried.gonzi@stud.uni-graz.at>,
	<caml-list@inria.fr>
Subject: RE: [Caml-list] Reading a file
Date: Tue, 20 May 2003 12:21:10 +0200	[thread overview]
Message-ID: <020c01c31eb9$8c376710$0200a8c0@gateway> (raw)
In-Reply-To: <3EC9EA84.3070404@stud.uni-graz.at>

If the files are not of megabyte size, I just read 
them into a string. Very fast.

(** return the contents of filename as a string *)
let read_as_string filename =
  (* read at most len chars into string s, return the number of chars
read *)
  let rec my_input ic s ofs len =
    if len <= 0 then ofs else begin
      let r = input ic s ofs len in
      if r = 0
      then ofs
      else my_input ic s (ofs+r) (len-r)
    end in
  let ic = open_in_bin filename in
  let max_size = in_channel_length ic in
  let buf = String.create max_size in
  let read_chars = my_input ic buf 0 max_size in
  close_in ic;
  String.sub buf 0 read_chars ;;

> -----Original Message-----
> From: owner-caml-list@pauillac.inria.fr 
> [mailto:owner-caml-list@pauillac.inria.fr] On Behalf Of 
> Siegfried Gonzi
> Sent: den 20 maj 2003 10:43
> To: 'caml-list@inria.fr'
> Subject: [Caml-list] Reading a file
> 
> 
> Hi:
> 
> Is there a better way in Ocaml to read a file line by line 
> than via the 
> read_line function?
> 
> I use read_line on a file, perform some tasks on this line 
> and store the 
> results in a list and after having red the file I use List.rev. The 
> problem actually is on big files the function is awfully slow. As 
> similar Clean function takes 15 seconds, my Bigloo program takes 25 
> second and my C++ programs (via templates) takes 25 secondes but my 
> Ocaml program takes 8 minutes.
> 
> I am not sure how quick List.rev actually is? In Bigloo 
> reversing a list 
> has more or less no overhead. My Bigloo function is similar 
> to my OCaml 
> function. Could it be that OCaml is that slow because I use "try and 
> with" constructs in order to check for the end of a file?
> 
> Why my Clean function is that fast is incomprehensible for 
> me. Does one 
> know whether there exists a function in OCaml which converts 
> a String to 
> a character-list? I use this construct in Clean then in order 
> to extract 
> floating point numbers from that character list: 
> ['1','.','2',...] and 
> store this floating point numbers via pattern matching in my 
> result-list.
> 
> S. Gonzi
> 
> 
> >
> >
> 
> 
> 
> -------------------
> To unsubscribe, mail caml-list-request@inria.fr Archives: 
http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs
FAQ: http://caml.inria.fr/FAQ/ Beginner's list:
http://groups.yahoo.com/group/ocaml_beginners

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2003-05-20 10:21 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <ocaml@tagger.yapper.org>
2003-03-31 16:51 ` [Caml-list] How can I check for the use of polymorphic equality? Neel Krishnaswami
2003-03-31 17:33   ` brogoff
2003-04-03 19:44   ` Jason Hickey
2003-04-03 20:40     ` Pierre Weis
2003-04-03 20:53       ` Chris Hecker
2003-04-04  8:46         ` Pierre Weis
2003-04-04 19:05           ` Jason Hickey
2003-04-04  9:10         ` Andreas Rossberg
2003-05-14 11:43 ` [Caml-list] ocaml and large development projects Traudt, Mark
2003-05-14 15:52   ` Jason Hickey
2003-05-18  5:32     ` Chris Hecker
2003-05-18  5:44       ` David Brown
2003-05-18  6:10         ` Chris Hecker
2003-05-18 11:13           ` John Carr
2003-05-18 16:51             ` Ed L Cashin
2003-05-18 18:08               ` Lex Stein
2003-05-18 19:08                 ` Ed L Cashin
2003-05-18 19:55                   ` Lex Stein
2003-05-19  8:13                   ` Markus Mottl
2003-05-19  8:33                     ` Nicolas Cannasse
2003-06-02 21:59                     ` John Max Skaller
2003-05-18 23:19                 ` Chris Hecker
2003-05-18 14:38           ` David Brown
2003-05-18 16:00             ` Ville-Pertti Keinonen
2003-05-19 15:36           ` Brian Hurt
2003-05-19 19:31             ` Chris Hecker
2003-05-19 23:39               ` Seth Kurtzberg
2003-05-20  8:07               ` [Caml-list] ocaml as *.so (was: ...and large development projects) Wolfgang Müller
2003-05-20  8:42                 ` [Caml-list] Reading a file Siegfried Gonzi
2003-05-20 10:21                   ` Mattias Waldau [this message]
2003-05-20 10:48                   ` Nicolas Cannasse
2003-05-20 10:55                   ` Markus Mottl
2003-05-20 13:20                   ` Michal Moskal
2003-05-20 12:21                     ` Siegfried Gonzi
2003-05-21  6:11                     ` Siegfried Gonzi
2003-05-21  6:48                       ` Siegfried Gonzi
2003-05-21  6:53                         ` Siegfried Gonzi
2003-05-21  9:16                           ` Markus Mottl
2003-05-21 10:04                             ` Eray Ozkural
2003-05-21 16:20                               ` brogoff
2003-05-21  8:21                       ` Michal Moskal
2003-05-21  7:24                         ` [Caml-list] PsiLAB works fine under Linux SuSE 8 Siegfried Gonzi
2003-05-21  9:11                       ` [Caml-list] Reading a file Markus Mottl
2003-05-22  6:27                         ` Siegfried Gonzi
2003-05-22 10:26                           ` Markus Mottl
2003-05-23  5:59                             ` Siegfried Gonzi
2003-05-23  6:04                               ` Siegfried Gonzi
2003-05-20 10:45                 ` [Caml-list] ocaml as *.so (was: ...and large development projects) Nicolas Cannasse
2003-05-20 11:17                   ` Wolfgang Müller
2003-05-20 11:31                     ` Nicolas Cannasse
2003-05-20 11:40                       ` Wolfgang Müller
2003-06-02 22:40                 ` John Max Skaller
2003-06-03 13:26                   ` [Caml-list] ocaml as *.so Remi Vanicat
2003-06-02 22:42               ` [Caml-list] ocaml and large development projects John Max Skaller
2003-06-02 21:24           ` John Max Skaller
2003-06-02 21:12       ` John Max Skaller
2003-06-03  0:31         ` Chris Hecker
2003-06-03 10:13           ` Michal Moskal
2003-06-03 18:12             ` Chris Hecker
2003-06-03 14:31           ` art yerkes
2003-06-03 21:55           ` Jason Hickey
2003-06-03 22:42             ` Chris Hecker
2003-06-06 23:46             ` John Max Skaller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='020c01c31eb9$8c376710$0200a8c0@gateway' \
    --to=mattias.waldau@abc.se \
    --cc=caml-list@inria.fr \
    --cc=siegfried.gonzi@stud.uni-graz.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).