<?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/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"
  prev="2003/01/066d9829d769feae2e66d6d13b0c2e5f"
  next="2003/01/2b94ee440d88d35bc171415731c354a7"
  prev-in-thread="2003/01/fab35b022410822cb86a9793044747e0"
  next-in-thread="2003/01/2431333c3c6b36d46b3e0780dfccb921"
  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>
 Brian Hurt [Thursday 30 January 2003] :
 &gt; For short lists, this is the worst performer overall.  I whipped up a 
 &gt; quick microbenchmark to compare the various implementations- the three 
 &gt; implementations are included in this email.  The three programs are:
 &gt; 
 &gt; list1.ml: lappend uses the @ operator to append the list
 &gt; 
 &gt; list2.ml: uses local rev_append and rev functions (similiar to those in 
 &gt; List) to append the list
 &gt; 
 &gt; list3.ml: uses Olivier's set_cdr function.
 &gt; 
 &gt; The results I saw (compiling with ocamlopt -o list list.ml on a 1.4GHz P4
 &gt; running Linux and ocaml 3.06) are:
 &gt; 
 &gt; list1: 1.462s
 &gt; list2: 1.757s
 &gt; 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.

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. 

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

