<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2003/01/2431333c3c6b36d46b3e0780dfccb921"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-30T21:48:04"
  subject="Re: [Caml-list] @, List.append, and tail recursion"
  prev="2003/01/fab35b022410822cb86a9793044747e0"
  next="2003/01/9676deab43bb44cb174c80433348dec3"
  prev-in-thread="2003/01/84b55a0c74cfad2033538b3b7b54c310"
  next-in-thread="2003/01/9676deab43bb44cb174c80433348dec3"
  prev-thread="2003/01/0e9c2bc35f3c3fbbe7e967dccafbddfc"
  next-thread="2003/01/d579dc7183e18352238ff4a8f4a069ee"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/4a9754e53ff07723caf21b4496d1d267"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-24T01:14:50"
  subject="[Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/899bda8a77b5c4c96e73e91b5cca074b"
  from="Olivier Andrieu &lt;andrieu@i...&gt;"
  author="Olivier Andrieu"
  date="2003-01-30T18:10:32"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/fab35b022410822cb86a9793044747e0"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-30T19:37:04"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/84b55a0c74cfad2033538b3b7b54c310"
  from="Olivier Andrieu &lt;oandrieu@n...&gt;"
  author="Olivier Andrieu"
  date="2003-01-31T09:40:48"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/2431333c3c6b36d46b3e0780dfccb921"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-30T21:48:04"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/9676deab43bb44cb174c80433348dec3"
  from="james woodyatt &lt;jhw@w...&gt;"
  author="james woodyatt"
  date="2003-01-31T02:18:43"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/a9673766c5e0333ea0c657cce6e6a1c6"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-31T17:04:15"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/f09c1cd83ec921dc87b5dc72261e2890"
  from="Issac Trotts &lt;ijtrotts@u...&gt;"
  author="Issac Trotts"
  date="2003-01-31T23:07:46"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
</msg>
<msg 
  url="2003/01/43d4021b732340168a7aa2d608ef4e32"
  from="brogoff@s..."
  author="brogoff@s..."
  date="2003-01-31T17:42:54"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
</msg>
<msg 
  url="2003/01/879004760584f7faab4a520558ec76fd"
  from="Russ Ross &lt;caml@r...&gt;"
  author="Russ Ross"
  date="2003-01-31T19:18:57"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/02/e6489db58afc9a883258a73c728cb74c"
  from="brogoff@s..."
  author="brogoff@s..."
  date="2003-02-01T02:30:58"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
</msg>
<msg 
  url="2003/01/e8ff6f38a8931153eb164322e7095221"
  from="Alexander V. Voinov &lt;avv@q...&gt;"
  author="Alexander V. Voinov"
  date="2003-01-31T19:39:44"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
</msg>
</msg>
</msg>
<msg 
  url="2003/01/1c9ca4f143a0ace6056cb77ebfb173e0"
  from="Diego Olivier Fernandez Pons &lt;Diego-Olivier.FERNANDEZ-PONS@c...&gt;"
  author="Diego Olivier Fernandez Pons"
  date="2003-01-31T17:06:41"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/01/5cfa2d91424bf433790e9d4c7ffeb3d6"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2003-01-31T19:43:14"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
<msg 
  url="2003/02/fe0747cbf160b030a7c262d2d3175a0e"
  from="Diego Olivier Fernandez Pons &lt;Diego-Olivier.FERNANDEZ-PONS@c...&gt;"
  author="Diego Olivier Fernandez Pons"
  date="2003-02-01T10:19:59"
  subject="Linear systems (was Re: [Caml-list] @, List.append, and tail recursion)">
</msg>
</msg>
<msg 
  url="2003/01/bc5c8643c380f6aab1a0509ce17e2872"
  from="Issac Trotts &lt;ijtrotts@u...&gt;"
  author="Issac Trotts"
  date="2003-01-31T21:30:38"
  subject="Re: [Caml-list] @, List.append, and tail recursion">
</msg>
</msg>
</msg>
</msg>
</msg>
</msg>
</msg>
</msg>
</thread>

<contents>
On Thu, 30 Jan 2003, Olivier Andrieu wrote:

&gt;  &gt; list1: 1.462s
&gt;  &gt; list2: 1.757s
&gt;  &gt; list3: 1.824s
&gt; 
&gt; There's an assert in setcdr : it's important because the first
&gt; argument mustn't be an empty list. It's never the case here, so you
&gt; 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.

&gt; 
&gt; On my hardware list3 seems to be a teeny bit faster than list1 but
&gt; anyway, since list2 is just barely slower, I'm not sure it's worth the
&gt; trouble. 
&gt; 

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

</contents>

</message>

