From: Brian Hurt <brian.hurt@qlogic.com>
To: Olivier Andrieu <oandrieu@nerim.net>
Cc: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] @, List.append, and tail recursion
Date: Thu, 30 Jan 2003 15:57:14 -0600 (CST) [thread overview]
Message-ID: <Pine.LNX.4.33.0301301543240.3577-100000@eagle.ancor.com> (raw)
In-Reply-To: <15929.37032.3235.338843@karryall.dnsalias.org>
On Thu, 30 Jan 2003, Olivier Andrieu wrote:
> > list1: 1.462s
> > list2: 1.757s
> > list3: 1.824s
>
> There's an assert in setcdr : it's important because the first
> argument mustn't be an empty list. It's never the case here, so you
> can safely compile with -noassert.
Doh! OK- now, compiling with -noassert drops the time to 1.457 seconds
(same machine, same environment)- to slightly better than the recursive
version.
And for the record, I just tested with appending to a list of 500,000
elements, and it worked OK.
>
> On my hardware list3 seems to be a teeny bit faster than list1 but
> anyway, since list2 is just barely slower, I'm not sure it's worth the
> trouble.
>
Correctness rates higher in my book than performance. I think it's bad
that @/List.append die due to stack overflow if the lists are too long.
I'd perfer the reversing solution- which works correctly so long as there
is enough memory- over the recursive solution for that reason alone.
Your code is even better. It gives the performance of the recursive
version and the correctness of the reversing code- better yet, it doesn't
allocate two whole copies of the array, allowing the code to work
correctly in even more cases (when there is enough memory for one copy of
the list but not two).
Brian
-------------------
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
next prev parent reply other threads:[~2003-01-30 21:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-24 0:48 Brian Hurt
2003-01-30 18:10 ` Olivier Andrieu
2003-01-30 19:46 ` Brian Hurt
2003-01-30 20:52 ` Olivier Andrieu
2003-01-30 21:57 ` Brian Hurt [this message]
2003-01-31 2:16 ` james woodyatt
2003-01-31 17:05 ` Diego Olivier Fernandez Pons
2003-01-31 19:52 ` Brian Hurt
2003-02-01 10:18 ` Linear systems (was Re: [Caml-list] @, List.append, and tail recursion) Diego Olivier Fernandez Pons
2003-01-31 21:34 ` [Caml-list] @, List.append, and tail recursion Issac Trotts
2003-01-31 17:13 ` Brian Hurt
2003-01-31 17:42 ` brogoff
2003-01-31 19:18 ` Russ Ross
2003-01-31 19:32 ` Alexander V. Voinov
2003-02-01 2:30 ` brogoff
2003-01-31 23:12 ` Issac Trotts
2003-01-24 15:35 Andrew Kennedy
2003-01-30 1:44 ` brogoff
2003-01-30 9:57 ` Christophe Raffalli
2003-01-30 16:03 ` Brian Hurt
2003-01-31 10:33 ` Mattias Waldau
2003-01-31 17:32 Diego Olivier Fernandez Pons
2003-01-31 19:58 Harrison, John R
2003-01-31 21:04 ` Brian Hurt
2003-01-31 22:27 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=Pine.LNX.4.33.0301301543240.3577-100000@eagle.ancor.com \
--to=brian.hurt@qlogic.com \
--cc=caml-list@inria.fr \
--cc=oandrieu@nerim.net \
/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