On Thu, 30 Nov 2006 19:58:20 -0800, David Harvey  
<[EMAIL PROTECTED]> wrote:
>> OK, I've done that.  But honestly, I don't know what it is really
>> timing,
>> since the optimizing compiler could be doing all kinds of interesting
>> things with unrolling loops, macros, etc.  And it's really pretty
>> unfair,
>> since the point is optimizing an interpreter rather than a compiler.
>> With that benchmark though, object creation is basically 12 times
>> faster
>> for Python ints, though again I think one has to be careful in
>> intepreting
>> how these things mean, when we're really trying to benchmark an
>> interpreter
>> and the object-creation-overhead of that interpreter.
>
> I agree that the interpreter setting is important. But the compiled
> setting is important too. For example, if you write a pyrex function
> that operates on matrices, whose elements are arbitrary python
> objects, and you happen to give it a matrix with python ints as
> entries, it will go something like 12 times faster than if you had
> given it a matrix with SAGE ints. Well, not 12, but still probably
> significant.

I certainly agree that the compiled setting is very very important.
I just think it is much more difficult to interpret the benchmarks,
and they are less directly relevant to the interpreted setting.  More
precisely, there are two problems:

    (1) make a+b fast from the interpreter

and

    (2) make a+b fast from compiled code.

I think regarding (1) we're within a factor of 2-3 of what is realisitic
in the Python interpreter (because of all the other overhead), which is  
pretty good,
and is a lot lot better than a factor of 7-10.     Regarding (2), there is  
a
potential for a lot more  progress by doing further investigation, and  
such work
would really be important.  Perhaps in some cases we could get 8 times  
faster,
since...

{{{
%sagex

 from sage.rings.integer cimport Integer

def foo(n):
    cdef int i

    for i from 0 <= i < n:
        PY_NEW(Integer)
}}}

{{{
time foo(10^6)
///
CPU time: 0.42 s,  Wall time: 0.42 s
}}}

{{{
%sagex

cdef class X:
     pass

def foo(n):
    cdef int i
    cdef mpz_t x

    for i from 0 <= i < n:
        PY_NEW(X)
}}}

{{{
time foo(10^6)
///
CPU time: 0.21 s,  Wall time: 0.21 s
}}}

{{{
%sagex

def foo(n):
    cdef int i
    a = 9308234

    for i from 0 <= i < n:
        b = a + a
}}}
{{{
time foo(10^6)
///
CPU time: 0.05 s,  Wall time: 0.05 s
}}}

  -- William

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to