From: Oliver Bandel <oliver@first.in-berlin.de>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] OCaml troll on Slashdot
Date: Thu, 17 Mar 2005 01:21:09 +0100 [thread overview]
Message-ID: <20050317002109.GD439@first.in-berlin.de> (raw)
In-Reply-To: <Pine.LNX.4.58.0503160931190.30293@shell2.speakeasy.net>
On Wed, Mar 16, 2005 at 09:43:42AM -0800, brogoff wrote:
> On Wed, 16 Mar 2005, Jacques Garrigue wrote:
> > From: Yoann Padioleau <padiolea@irisa.fr>
> > > Jon Harrop <jon@ffconsultancy.com> writes:
> > > > In OCaml, non-tail-recursive functions are often faster than their tail
> > > > recursive equivalents for small inputs (e.g. short lists).
> > >
> > > really ? why ?
> >
> > Because tail-recursive versions do some extra work to ensure
> > tail-recursiveness. For instance building a list in reverse order, and
> > converting it back with List.rev at the end. This only pays off for
> > huge lists.
>
> No doubt the implementors will want me guillotined for bringing this up again,
> but using the (still functional!) set_cdr! tail recursive functions, which do
> *not* reverse the list, are always faster than the non tail recursive
> list functions, even for small lists, at least in my experience.
And I experienced, that adding a "_rev" at the end of a function
often makes more sense than adding a List.rev inside.
Often some code produces a list and gives it to a function that
again creates a list, based on that data.
Then "_rev"^2 means _orig and all is going well.
If there are an odd number of "_rev"-functions,
a List.rev can be added *THEN* (instead of always feel
the necessity to provide "_orig"-functions instead of
"_rev"-functions.
Ciao,
Oliver
next prev parent reply other threads:[~2005-03-17 10:20 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-15 1:29 Karl Zilles
2005-03-15 8:32 ` [Caml-list] " Oliver Bandel
2005-03-15 8:45 ` Michael Vanier
2005-03-15 8:59 ` Jon Harrop
2005-03-15 20:17 ` Yoann Padioleau
2005-03-15 20:36 ` Jon Harrop
2005-03-15 21:03 ` padiolea
2005-03-15 21:40 ` William D.Neumann
2005-03-15 22:12 ` Yoann Padioleau
2005-03-15 23:07 ` William D.Neumann
2005-03-15 23:39 ` Jon Harrop
2005-03-15 23:54 ` Thomas Fischbacher
2005-03-16 0:03 ` Christopher Dutchyn
2005-03-16 0:18 ` Oliver Bandel
2005-03-16 1:05 ` Yoann Padioleau
2005-03-16 2:55 ` Oliver Bandel
2005-03-16 11:23 ` Thomas Fischbacher
2005-03-16 23:41 ` Oliver Bandel
2005-03-16 13:33 ` Yoann Padioleau
2005-03-16 23:59 ` Oliver Bandel
2005-03-16 3:01 ` Jon Harrop
2005-03-16 13:10 ` Yoann Padioleau
2005-03-16 13:41 ` Jacques Garrigue
2005-03-16 14:14 ` Yoann Padioleau
2005-03-17 0:27 ` Oliver Bandel
2005-03-16 17:43 ` brogoff
2005-03-16 19:51 ` Jon Harrop
2005-03-17 3:35 ` brogoff
2005-03-17 3:48 ` Yaron Minsky
2005-03-17 10:16 ` Jon Harrop
2005-03-17 10:47 ` Oliver Bandel
2005-03-17 18:06 ` brogoff
2005-03-17 19:15 ` Marcin 'Qrczak' Kowalczyk
2005-03-18 17:46 ` brogoff
2005-03-18 18:44 ` Marcin 'Qrczak' Kowalczyk
2005-03-17 21:31 ` Oliver Bandel
2005-03-17 9:45 ` Christian Szegedy
2005-03-17 10:31 ` Jon Harrop
2005-03-17 11:11 ` Ville-Pertti Keinonen
2005-03-17 11:31 ` tail-recursion vs. no tail-recursion in list functions sebastian.egner
2005-03-17 21:41 ` [Caml-list] " Oliver Bandel
2005-03-18 0:04 ` David Brown
2005-03-18 0:06 ` Karl Zilles
2005-03-18 1:13 ` Jacques Garrigue
2005-03-17 0:21 ` Oliver Bandel [this message]
2005-03-17 1:05 ` [Caml-list] OCaml troll on Slashdot Jacques Garrigue
2005-03-17 17:32 ` Jason Hickey
2005-03-17 19:06 ` Marcin 'Qrczak' Kowalczyk
2005-03-17 0:14 ` Oliver Bandel
2005-03-16 1:38 ` Jacques Garrigue
2005-03-31 11:42 ` Paul Argentoff
2005-03-31 11:41 ` Paul Argentoff
2005-03-15 20:06 ` Yoann Padioleau
2005-03-15 9:25 ` Richard Jones
2005-03-15 10:08 ` YANG Shouxun
2005-03-15 20:02 ` Yoann Padioleau
2005-03-15 22:33 ` Richard Jones
2005-03-16 1:33 ` YANG Shouxun
2005-03-15 10:34 ` padiolea
2005-03-15 10:52 ` Diego Olivier Fernandez Pons
2005-03-15 14:12 ` Eijiro Sumii
2005-03-15 15:25 ` Christophe TROESTLER
2005-03-15 18:05 ` Thomas Fischbacher
2005-03-15 18:26 ` Kip Macy
2005-03-16 0:32 ` Oliver Bandel
2005-03-16 11:26 ` David Fox
2005-03-15 18:55 ` Christopher A. Watford
2005-03-15 19:56 ` Jon Harrop
2005-03-16 0:35 ` Oliver Bandel
2005-03-16 0:34 ` Oliver Bandel
2005-03-18 6:04 Harrison, John R
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=20050317002109.GD439@first.in-berlin.de \
--to=oliver@first.in-berlin.de \
--cc=caml-list@yquem.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