[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pypy-dev
Subject:    Re: [pypy-dev] PyPy proved slower than Python when used os.rename and os.link [ Suggest how to get r
From:       Sasikanth Eda <sasikanth.ece () gmail ! com>
Date:       2012-05-18 5:54:44
Message-ID: CAKw8Pp6ffpi9wb8tP2XffW_vuKTUaCg+mxgW-DdbS8LOnp6ZyQ () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hai Alex,

Thanks for your reply and making me understand about PyPy Jit.

Some more query on PyPy;

1.  In my trails I agree that I don't have loops in my program so PyPy is
not able to optimize it. But it should at least should give me the same
execution time as when executed with python.
     So what might be the reason for this that PyPy took more time than
Python ?

2.  Suppose assume a condition where we have a lot of loops and function
calls in a python program and it is called by several independent processes
(a typical cgi-model). Then what could be the thought is we use PyPy for
such programs (i.e in specific whether are we going to get any performance
changes when compared with python ? )

Thanking you,
Sasikanth

On Fri, May 18, 2012 at 10:41 AM, Alex Gaynor <alex.gaynor@gmail.com> wrote:

>
>
> On Fri, May 18, 2012 at 12:58 AM, Sasikanth Eda <sasikanth.ece@gmail.com>wrote:
>
>> Hai All,
>>
>> In trails of finding the execution time lapse between Python and PyPy ,
>> its proved that PyPy is slower than Python.
>>
>> Here are the trials done ;
>>
>> *Step-1: Written a Python code that uses repeated os.rename()*
>> *
>> *
>> *code: (file name : rename.py)*
>> *           #!/usr/bin/env python*
>> *
>> *
>> *           import os*
>> *           import sys*
>> *
>> *
>> *           os.chdir("/opt/pypy-1.8/bin")*
>> *           print "Rename count -1  (a1 -> a2)"*
>> *           os.rename("a1","a2")*
>> *           print "Rename count -2  (a2 -> a3)"*
>> *           os.rename("a2","a3")*
>> *           print "Rename count -3  (a3 -> a4)"*
>> *           os.rename("a3","a4")*
>> *           print "Rename count -4  (a4 -> a5)"*
>> *           os.rename("a4","a5")*
>> *           print "Rename count -5  (a5 -> a6)"*
>> *           os.rename("a5","a6")*
>> *           print "Rename count -6  (a6 -> a7)"*
>> *           os.rename("a6","a7")*
>> *           print "Rename count -7  (a7 -> a8)"*
>> *           os.rename("a7","a8")*
>> *           print "Rename count -8  (a8 -> a9)"*
>> *           os.rename("a8","a9")*
>> *           print "Rename count -9  (a9 -> a0)"*
>> *           os.rename("a9","a0")*
>> *           print "Rename count -10 (a0 -> B0)"*
>> *           os.rename("a0","B0")*
>> *
>> *
>> *Step-2: Observed Execution time with Python 2.7*
>> *
>> *
>> *           [root@Manojkiran bin]# time python rename.py *
>> *           Rename count -1  (a1 -> a2)*
>> *           Rename count -2  (a2 -> a3)*
>> *           Rename count -3  (a3 -> a4)*
>> *           Rename count -4  (a4 -> a5)*
>> *           Rename count -5  (a5 -> a6)*
>> *           Rename count -6  (a6 -> a7)*
>> *           Rename count -7  (a7 -> a8)*
>> *           Rename count -8  (a8 -> a9)*
>> *           Rename count -9  (a9 -> a0)*
>> *           Rename count -10 (a0 -> B0)*
>> *
>> *
>> *           real 0m0.031s*
>> *           user 0m0.021s*
>> *           sys 0m0.010s*
>>
>> Step-3:* Observed Execution time with PyPy 1.8*
>> *
>> *
>>            [root@Manojkiran bin]# time ./pypy rename.py
>> *           ./pypy: /usr/local/ssl/lib/libssl.so.0.9.8: no version
>> information available (required by ./pypy)*
>> *           ./pypy: /usr/local/ssl/lib/libcrypto.so.0.9.8: no version
>> information available (required by ./pypy)*
>> *           Rename count -1  (a1 -> a2)*
>> *           Rename count -2  (a2 -> a3)*
>> *           Rename count -3  (a3 -> a4)*
>> *           Rename count -4  (a4 -> a5)*
>> *           Rename count -5  (a5 -> a6)*
>> *           Rename count -6  (a6 -> a7)*
>> *           Rename count -7  (a7 -> a8)*
>> *           Rename count -8  (a8 -> a9)*
>> *           Rename count -9  (a9 -> a0)*
>> *           Rename count -10 (a0 -> B0)*
>>
>>            real 0m0.054s
>>            user 0m0.036s
>>            sys 0m0.016s
>> *
>> *
>> *Step-4: Written a Python code that uses repeated os.link()*
>> *
>> *
>> *code: (file name : link.py)*
>>           * #!/usr/bin/env python*
>> *
>> *
>> *           import os*
>> *           import sys*
>> *
>> *
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l0")*
>> *           print "Linked count -1  (l0 -> lo)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l1")*
>> *           print "Linked count -2  (l0 -> l1)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l2")*
>> *           print "Linked count -3  (l0 -> l2)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l3")*
>> *           print "Linked count -4  (l0 -> l3)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l4")*
>> *           print "Linked count -5  (l0 -> l4)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l5")*
>> *           print "Linked count -6  (l0 -> l5)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l6")*
>> *           print "Linked count -7  (l0 -> l6)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l7")*
>> *           print "Linked count -8  (l0 -> l7)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l8")*
>> *           print "Linked count -9  (l0 -> l8)"*
>> *           os.link("/opt/pypy-1.8/bin/l0","/opt/pypy-1.8/bin/test/l9")*
>> *           print "Linked count -10 (l0 -> l9)"*
>>
>> *Step-5: Observed Execution time with Python 2.7*
>> *
>> *
>> *           [root@Manojkiran bin]# time python link.py *
>> *           Linked count -1  (l0 -> l0)*
>> *           **Linked** count -2  (l0 -> l1)*
>> *           **Linked** count -3  (l0 -> l2)*
>> *           **Linked** count -4  (l0 -> l3)*
>> *           **Linked** count -5  (l0 -> l4)*
>> *           **Linked** count -6  (l0 -> l5)*
>> *           **Linked** count -7  (l0 -> l6)*
>> *           **Linked** count -8  (l0 -> l7)*
>> *           **Linked** count -9  (l0 -> l8)*
>> *           **Linked** count -10 (l0 -> l9)*
>> *
>> *
>> *           real 0m0.028s*
>> *           user 0m0.020s*
>> *           sys 0m0.008s*
>>
>> Step-6:* Observed Execution time with PyPy 1.8*
>> *
>> *
>>            [root@Manojkiran bin]# time ./pypy link.py
>> *           ./pypy: /usr/local/ssl/lib/libssl.so.0.9.8: no version
>> information available (required by ./pypy)*
>> *           ./pypy: /usr/local/ssl/lib/libcrypto.so.0.9.8: no version
>> information available (required by ./pypy)*
>> *           Linked count -1  (l0 -> l0)*
>> *           **Linked** count -2  (l0 -> l1)*
>> *           **Linked** count -3  (l0 -> l2)*
>> *           **Linked** count -4  (l0 -> l3)*
>> *           **Linked** count -5  (l0 -> l4)*
>> *           **Linked** count -6  (l0 -> l5)*
>> *           **Linked** count -7  (l0 -> l6)*
>> *           **Linked** count -8  (l0 -> l7)*
>> *           **Linked** count -9  (l0 -> l8)*
>> *           **Linked** count -10 (l0 -> l9)*
>> *
>> *
>>            real 0m0.056s
>>            user 0m0.032s
>>            sys 0m0.023s
>>
>> Hence in my understanding Python is better in terms of execution time
>> when compared with PyPy.
>>
>> Kindly suggest me if my trails are proper and why PyPy failed to achieve
>> better speed then PyPy ?
>>
>> Is this a know issue or whether we have any fix for this ?
>>
>> Thanking you,
>> --
>> Sasikanth
>>
>>
>>
>>
>> _______________________________________________
>> pypy-dev mailing list
>> pypy-dev@python.org
>> http://mail.python.org/mailman/listinfo/pypy-dev
>>
>>
> PyPy's JIT works by optimizing loops and functions that are frequently
> run, this generally means your code needs to run at least .5 seconds for
> the JIT to kick in and show benefits.  Your code contains no loops for the
> JIT to optimize.
>
> Alex
>
> --
> "I disapprove of what you say, but I will defend to the death your right
> to say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
> "The people's good is the highest law." -- Cicero
>
>

[Attachment #5 (text/html)]

Hai Alex,<div><br></div><div>Thanks for your reply and making me understand about \
PyPy Jit.</div><div><br></div><div>Some more query on \
PyPy;</div><div><br></div><div>1.  In my trails I agree that I don&#39;t have loops \
in my program so PyPy is not able to optimize it. But it should at least should give \
me the same execution time as when executed with python.</div> <div>     So what \
might be the reason for this that PyPy took more time than Python \
?</div><div><br></div><div>2.  Suppose assume a condition where we have a lot of \
loops and function calls in a python program and it is called by several independent \
processes (a typical cgi-model). Then what could be the thought is we use PyPy for \
such programs (i.e in specific whether are we going to get any performance changes \
when compared with python ? )</div> <div>     </div><div>Thanking \
you,</div><div>Sasikanth</div><div><br></div><div>On Fri, May 18, 2012 at 10:41 AM, \
Alex Gaynor <span dir="ltr">&lt;<a href="mailto:alex.gaynor@gmail.com" \
target="_blank">alex.gaynor@gmail.com</a>&gt;</span> wrote:</div> <div><div \
class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex"><br><br><div \
class="gmail_quote"><div><div class="h5">On Fri, May 18, 2012 at 12:58 AM, Sasikanth \
Eda <span dir="ltr">&lt;<a href="mailto:sasikanth.ece@gmail.com" \
target="_blank">sasikanth.ece@gmail.com</a>&gt;</span> wrote:<br> \
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px \
#ccc solid;padding-left:1ex"><div><div class="h5"> Hai All,<div><br></div><div>In \
trails of finding the execution time lapse between Python and PyPy , its proved that \
PyPy is slower than Python.</div><div><br></div><div>Here are the trials done \
;</div><div><br></div><div>

<b>Step-1: Written a Python code that uses repeated os.rename()</b></div>
<div><b><br></b></div><div><b>code: (file name : rename.py)</b></div><div><div><i>    \
#!/usr/bin/env python</i></div><div><i><br></i></div><div><i>           import \
os</i></div><div><i>           import sys</i></div>


<div><i><br></i></div><div><i>           \
os.chdir(&quot;/opt/pypy-1.8/bin&quot;)</i></div><div><i>           print \
&quot;Rename count -1  (a1 -&gt; a2)&quot;</i></div><div><i>           \
os.rename(&quot;a1&quot;,&quot;a2&quot;)</i></div>


<div><i>           print &quot;Rename count -2  (a2 -&gt; a3)&quot;</i></div><div><i> \
os.rename(&quot;a2&quot;,&quot;a3&quot;)</i></div><div><i>           print \
&quot;Rename count -3  (a3 -&gt; a4)&quot;</i></div>


<div><i>           os.rename(&quot;a3&quot;,&quot;a4&quot;)</i></div><div><i>         \
print &quot;Rename count -4  (a4 -&gt; a5)&quot;</i></div><div><i>           \
os.rename(&quot;a4&quot;,&quot;a5&quot;)</i></div><div>

<i>           print &quot;Rename count -5  (a5 -&gt; a6)&quot;</i></div>
<div><i>           os.rename(&quot;a5&quot;,&quot;a6&quot;)</i></div><div><i>         \
print &quot;Rename count -6  (a6 -&gt; a7)&quot;</i></div><div><i>           \
os.rename(&quot;a6&quot;,&quot;a7&quot;)</i></div><div>

<i>           print &quot;Rename count -7  (a7 -&gt; a8)&quot;</i></div>
<div><i>           os.rename(&quot;a7&quot;,&quot;a8&quot;)</i></div><div><i>         \
print &quot;Rename count -8  (a8 -&gt; a9)&quot;</i></div><div><i>           \
os.rename(&quot;a8&quot;,&quot;a9&quot;)</i></div><div>

<i>           print &quot;Rename count -9  (a9 -&gt; a0)&quot;</i></div>
<div><i>           os.rename(&quot;a9&quot;,&quot;a0&quot;)</i></div><div><i>         \
print &quot;Rename count -10 (a0 -&gt; B0)&quot;</i></div><div><i>           \
os.rename(&quot;a0&quot;,&quot;B0&quot;)</i></div><div>

<i><br>
</i></div><div><b>Step-2: Observed Execution time with Python 2.7</b></div><div><div \
style="font-weight:bold"><i><br></i></div><div style="font-weight:bold"><i>           \
[root@Manojkiran bin]# time python rename.py </i></div>


<div><i>           Rename count -1  (a1 -&gt; a2)</i></div><div><i>           Rename \
count -2  (a2 -&gt; a3)</i></div><div><i>           Rename count -3  (a3 -&gt; \
a4)</i></div><div><i>           Rename count -4  (a4 -&gt; a5)</i></div>


<div><i>           Rename count -5  (a5 -&gt; a6)</i></div><div><i>           Rename \
count -6  (a6 -&gt; a7)</i></div><div><i>           Rename count -7  (a7 -&gt; \
a8)</i></div><div><i>           Rename count -8  (a8 -&gt; a9)</i></div>


<div><i>           Rename count -9  (a9 -&gt; a0)</i></div><div><i>           Rename \
count -10 (a0 -&gt; B0)</i></div><div style="font-weight:bold"><i><br></i></div><div \
style="font-weight:bold"><i>           real<span \
style="white-space:pre-wrap">	</span>0m0.031s</i></div>


<div style="font-weight:bold"><i>           user<span \
style="white-space:pre-wrap">	</span>0m0.021s</i></div><div \
style="font-weight:bold"><i>           sys<span \
style="white-space:pre-wrap">	</span>0m0.010s</i></div> <div \
style="font-weight:bold"><br></div></div><div style="font-weight:bold">Step-3:<b> \
Observed Execution time with PyPy 1.8</b></div></div><div \
style="font-weight:bold"><b><br></b></div><div><div style="font-weight:bold">


           [root@Manojkiran bin]# time ./pypy rename.py </div><div><i>           \
./pypy: /usr/local/ssl/lib/libssl.so.0.9.8: no version information available \
(required by ./pypy)</i></div><div><i>           ./pypy: \
/usr/local/ssl/lib/libcrypto.so.0.9.8: no version information available (required by \
./pypy)</i></div>


<div><i>           Rename count -1  (a1 -&gt; a2)</i></div><div><i>           Rename \
count -2  (a2 -&gt; a3)</i></div><div><i>           Rename count -3  (a3 -&gt; \
a4)</i></div><div><i>           Rename count -4  (a4 -&gt; a5)</i></div>


<div><i>           Rename count -5  (a5 -&gt; a6)</i></div><div><i>           Rename \
count -6  (a6 -&gt; a7)</i></div><div><i>           Rename count -7  (a7 -&gt; \
a8)</i></div><div><i>           Rename count -8  (a8 -&gt; a9)</i></div>


<div><i>           Rename count -9  (a9 -&gt; a0)</i></div><div><i>           Rename \
count -10 (a0 -&gt; B0)</i></div><div style="font-weight:bold"><br></div><div \
style="font-weight:bold">           real<span \
style="white-space:pre-wrap">	</span>0m0.054s</div>


<div style="font-weight:bold">           user<span \
style="white-space:pre-wrap">	</span>0m0.036s</div><div style="font-weight:bold">     \
sys<span style="white-space:pre-wrap">	</span>0m0.016s</div> \
</div><div><b><br></b></div> <div><b>Step-4: Written a Python code that uses repeated \
os.link()</b></div><div><b><br></b></div><div><b>code: (file name : \
link.py)</b></div><div><div>          <i> #!/usr/bin/env \
python</i></div><div><i><br></i></div>


<div><i>           import os</i></div><div><i>           import \
sys</i></div><div><i><br></i></div><div><i>           \
os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l0&quot;)</i></div><div><i> \
print &quot;Linked count -1  (l0 -&gt; lo)&quot;</i></div>


<div><i>           os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l1&quot;)</i></div>
 <div><i>           print &quot;Linked count -2  (l0 -&gt; \
l1)&quot;</i></div><div><i>           \
os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l2&quot;)</i></div><div><i> \
print &quot;Linked count -3  (l0 -&gt; l2)&quot;</i></div>


<div><i>           os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l3&quot;)</i></div>
 <div><i>           print &quot;Linked count -4  (l0 -&gt; \
l3)&quot;</i></div><div><i>           \
os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l4&quot;)</i></div><div><i> \
print &quot;Linked count -5  (l0 -&gt; l4)&quot;</i></div>


<div><i>           os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l5&quot;)</i></div>
 <div><i>           print &quot;Linked count -6  (l0 -&gt; \
l5)&quot;</i></div><div><i>           \
os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l6&quot;)</i></div><div><i> \
print &quot;Linked count -7  (l0 -&gt; l6)&quot;</i></div>


<div><i>           os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l7&quot;)</i></div>
 <div><i>           print &quot;Linked count -8  (l0 -&gt; \
l7)&quot;</i></div><div><i>           \
os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l8&quot;)</i></div><div><i> \
print &quot;Linked count -9  (l0 -&gt; l8)&quot;</i></div>


<div><i>           os.link(&quot;/opt/pypy-1.8/bin/l0&quot;,&quot;/opt/pypy-1.8/bin/test/l9&quot;)</i></div>
 <div><i>           print &quot;Linked count -10 (l0 -&gt; \
l9)&quot;</i></div><div><br></div><div><div><div><b>Step-5: Observed Execution time \
with Python 2.7</b></div><div><div style="font-weight:bold"><i><br></i></div><div \
style="font-weight:bold">


<i>           [root@Manojkiran bin]# time python link.py </i></div><div><i>           \
Linked count -1  (l0 -&gt; l0)</i></div><div><i>           </i><i>Linked</i><i> count \
-2  (l0 -&gt; l1)</i></div><div><i>           </i><i>Linked</i><i> count -3  (l0 \
-&gt; l2)</i></div>


<div><i>           </i><i>Linked</i><i> count -4  (l0 -&gt; l3)</i></div><div><i>     \
</i><i>Linked</i><i> count -5  (l0 -&gt; l4)</i></div><div><i>           \
</i><i>Linked</i><i> count -6  (l0 -&gt; l5)</i></div><div>


<i>           </i><i>Linked</i><i> count -7  (l0 -&gt; l6)</i></div><div><i>          \
</i><i>Linked</i><i> count -8  (l0 -&gt; l7)</i></div><div><i>           \
</i><i>Linked</i><i> count -9  (l0 -&gt; l8)</i></div><div><i>           \
</i><i>Linked</i><i> count -10 (l0 -&gt; l9)</i></div>


<div style="font-weight:bold"><i><br></i></div><div style="font-weight:bold"><i>      \
real<span style="white-space:pre-wrap">	</span>0m0.028s</i></div><div \
style="font-weight:bold"><i>           user<span \
style="white-space:pre-wrap">	</span>0m0.020s</i></div>


<div style="font-weight:bold"><i>           sys<span \
style="white-space:pre-wrap">	</span>0m0.008s</i></div><div \
style="font-weight:bold"><br></div></div><div style="font-weight:bold">Step-6:<b> \
Observed Execution time with PyPy 1.8</b></div>


</div><div style="font-weight:bold"><b><br></b></div><div><div \
style="font-weight:bold">           [root@Manojkiran bin]# time ./pypy link.py \
</div><div><i>           ./pypy: /usr/local/ssl/lib/libssl.so.0.9.8: no version \
information available (required by ./pypy)</i></div>


<div><i>           ./pypy: /usr/local/ssl/lib/libcrypto.so.0.9.8: no version \
information available (required by ./pypy)</i></div><div><div><i>           Linked \
count -1  (l0 -&gt; l0)</i></div><div><i>           </i><i>Linked</i><i> count -2  \
(l0 -&gt; l1)</i></div>


<div><i>           </i><i>Linked</i><i> count -3  (l0 -&gt; l2)</i></div><div><i>     \
</i><i>Linked</i><i> count -4  (l0 -&gt; l3)</i></div><div><i>           \
</i><i>Linked</i><i> count -5  (l0 -&gt; l4)</i></div><div>


<i>           </i><i>Linked</i><i> count -6  (l0 -&gt; l5)</i></div><div><i>          \
</i><i>Linked</i><i> count -7  (l0 -&gt; l6)</i></div><div><i>           \
</i><i>Linked</i><i> count -8  (l0 -&gt; l7)</i></div><div><i>           \
</i><i>Linked</i><i> count -9  (l0 -&gt; l8)</i></div>


<div><i>           </i><i>Linked</i><i> count -10 (l0 -&gt; \
l9)</i></div></div><div><i><br></i></div><div style="font-weight:bold">           \
real<span style="white-space:pre-wrap">	</span>0m0.056s</div> <div \
style="font-weight:bold">           user<span \
style="white-space:pre-wrap">	</span>0m0.032s</div><div style="font-weight:bold">     \
sys<span style="white-space:pre-wrap">	</span>0m0.023s</div> \
</div></div><div><br></div><div>Hence in my understanding Python is better in terms \
of execution time when compared with PyPy.</div><div><br></div><div>Kindly suggest me \
if my trails are proper and why PyPy failed to achieve better speed then PyPy ?</div>


<div><br></div><div>Is this a know issue or whether we have any fix for this \
?</div><div><br></div><div>Thanking you,</div><span><font color="#888888"><div>-- \
</div>Sasikanth<br><br><br><br> </font></span></div>
<br></div></div>_______________________________________________<br>
pypy-dev mailing list<br>
<a href="mailto:pypy-dev@python.org" target="_blank">pypy-dev@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/pypy-dev" \
target="_blank">http://mail.python.org/mailman/listinfo/pypy-dev</a><br> \
<br></blockquote></div><br>PyPy&#39;s JIT works by optimizing loops and functions \
that are frequently run, this generally means your code needs to run at least .5 \
seconds for the JIT to kick in and show benefits.  Your code contains no loops for \
the JIT to optimize.<span class="HOEnZb"><font color="#888888"><br>

<br>Alex<br clear="all"><br>-- <br>&quot;I disapprove of what you say, but I will \
defend to the death your right to say it.&quot; -- Evelyn Beatrice Hall (summarizing \
Voltaire)<br>&quot;The people&#39;s good is the highest law.&quot; -- Cicero<br>

<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div><br><br><br>
</div>



_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
http://mail.python.org/mailman/listinfo/pypy-dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic