caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Matt Gushee <mgushee@havenrock.com>
To: caml-list@pauillac.inria.fr
Subject: Re: [Caml-list] Performance problem
Date: Wed, 14 May 2003 16:41:31 -0600	[thread overview]
Message-ID: <20030514224130.GC27927@swordfish> (raw)
In-Reply-To: <20030514223956.GB27927@swordfish>

On Thu, May 15, 2003 at 01:13:48AM +0300, Ville-Pertti Keinonen wrote:

> >that occur to me are an output buffering problem or some delay in
> >interacting with the X display, but I'm not sure how to solve either of
> >those. And maybe it's something else entirely. Can anyone explain my
> >terrible results?
> 
> My guess (without profiling) is that most of the time is being spent 
> doing regular expression matching.
> 
> Regular expressions can be much slower than you might expect for 
> non-trivial cases.  The expression in your program looks particularly 
> nasty, since there are a lot of ambiguous cases (whether '-' should 
> match '.*' or '-' depends on everything that follows).
> 
> You might want to try using Str.split instead.

Good point. I don't know why I didn't think of that in the first place.

On Thu, May 15, 2003 at 12:18:51AM +0200, Olivier Andrieu wrote:
> 
> Hi, I don't really know where your performance problem come from, but :
> 
> 1) you regexp string is not properly escaped, all the "\(" and "\)"
>    should be "\\(" and "\\)".

Okay, I've run into that with other languages. But I didn't know you had
to do that in OCaml. Is that documented anywhere?

> (I guess you're not using ocaml 3.06
>    because it prints a lot of warnings concerning these).

Oh, I've seen those warnings more than once, and was thinking about
asking on the list, but it didn't seem urgent.

By the way, why doesn't the compiler just reject regexes with single
backslashes? What is the point of issuing warnings and then accepting
the incorrect syntax?

> 2) there are no problems using bytecode :
>      0.3s using bytecode
>      23s  using native

How strange. I actually didn't try compiling to bytecode. I had tried
using the function in the interactive toplevel, and finding it very
slow, went straight to native code in the hope that it would perform 
reasonably well. Any idea why bytecode would be faster?

> 3) you should use "[^-]*" instead of ".*" : this makes life easier for
>    the regexp matching and thus runs faster.
>      0.16s bytecode
>      0.03s native

Ah, another good point. I think I'll go with Str.split, but I'll keep
this in mind for future reference.

Thank you both for the suggestions.

-- 
Matt Gushee                 When a nation follows the Way,
Englewood, Colorado, USA    Horses bear manure through
mgushee@havenrock.com           its fields;
http://www.havenrock.com/   When a nation ignores the Way,
                            Horses bear soldiers through
                                its streets.
                                
                            --Lao Tzu (Peter Merel, trans.)

-------------------
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


  parent reply	other threads:[~2003-05-14 22:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-14 21:03 Matt Gushee
2003-05-14 22:13 ` Ville-Pertti Keinonen
     [not found]   ` <20030514223956.GB27927@swordfish>
2003-05-14 22:41     ` Matt Gushee [this message]
2003-05-15  7:57       ` Xavier Leroy
2003-05-15 10:53         ` Michal Moskal
2003-05-14 23:13   ` Matt Gushee

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=20030514224130.GC27927@swordfish \
    --to=mgushee@havenrock.com \
    --cc=caml-list@pauillac.inria.fr \
    /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).