On Sun, Nov 21, 2010 at 4:53 PM, Eviatar <eviatarb...@gmail.com> wrote:
> It is actually slower, not just feels like it. Here is a specific
> example:
>
> On Sage Notebook (locally):
>
> "from numpy import zeros
> from random import randint
>
> def cellular(rule, N, initial='Single-cell'):
>    '''Yields a matrix showing the evolution of a Wolfram's cellular
> automaton
>
>    rule:     determines how a cell's value is updated, depending on
> its neighbors
>    N:        number of iterations
>    initial:  starting condition; can be either single-cell or a
> random binary row
>    '''
>    M=zeros( (N,2*N+2), dtype=int)
>    if initial=='Single-cell':
>        M[0,N]=1
>    else:
>        M[0]=[randint(0,1) for a in range(0,2*N+2)]
>
>    for j in range(1,N):
>        for k in range(0,2*N):
>            l = 4*M[j-1,k-1] + 2*M[j-1,k] + M[j-1,k+1]
>            M[j,k]=rule[ l ]
>    return M[:,:-1]
>
> def num2rule(number):
>    if not 0 <= number <= 255:
>        raise Exception('Invalid rule number')
>    binary_digits = number.digits(base=2)
>    return binary_digits + [0]*(8-len(binary_digits))
>
> import time
>
> initial=time.clock()
> m=cellular(num2rule(90), 100)
> print time.clock()-initial"
>
> In Notebook, this returns 5.06. In command-line the same code produces
> an output of 0.11 seconds.

This has absolutely nothing to do with the notebook.   You can't have
this happen if you are actually running the same code.  I just tried
this and I get about 5 seconds both in the notebook and on the command
line.   *Precisely* how are you running the code on the command line?
You can't just paste it in, since it isn't formatted for that.  So
maybe you are saving it to a .py file, then using load or import? If
you do that, then you'll get much, much different times, because of
the Sage preparser, which is not being used on .py files.

Try the following in the notebook:

(1) Make a cell with exactly this content, and evaluate it:

%python
from numpy import zeros
from random import randint

def cellular(rule, N, initial='Single-cell'):
   '''Yields a matrix showing the evolution of a Wolfram's cellular
automaton

   rule:     determines how a cell's value is updated, depending on
its neighbors
   N:        number of iterations
   initial:  starting condition; can be either single-cell or a
random binary row
   '''
   M=zeros( (N,2*N+2), dtype=int)
   if initial=='Single-cell':
       M[0,N]=1
   else:
       M[0]=[randint(0,1) for a in range(0,2*N+2)]

   for j in range(1,N):
       for k in range(0,2*N):
           l = 4*M[j-1,k-1] + 2*M[j-1,k] + M[j-1,k+1]
           M[j,k]=rule[ l ]
   return M[:,:-1]

def num2rule(number):
   if not 0 <= number <= 255:
       raise Exception('Invalid rule number')
   binary_digits = number.digits(base=2)
   return binary_digits + [0]*(8-len(binary_digits))


(2) Make another cell with this content and evaluate it:

import time
initial=time.clock()
m=cellular(num2rule(90), 100)
print time.clock()-initial

You'll get a fast timing.

It would be good for you to learn about the Sage preparser more, since
in some cases turning it off (or at least explicitly not using it) can
lead to better performance, especially for numerical code.  Turning it
off can also lead to much slower (or wrong) code, but usually in the
context of symbolic (not numerical) computation.

William

>
> On Nov 21, 2:27 pm, William Stein <wst...@gmail.com> wrote:
>> On Sun, Nov 21, 2010 at 2:25 PM, William Stein <wst...@gmail.com> wrote:
>> > On Sun, Nov 21, 2010 at 1:33 PM, Eviatar <eviatarb...@gmail.com> wrote:
>> >> I don't know if this is related, but I've noticed even the local Sage
>> >> Notebook is slower than command-line, specifically NumPy operations.
>>
>> > It makes absolutely no sense that that could happen.    Please give a
>> > specific example.
>>
>> More precisely, please define exactly what you mean by "slower".  Do you 
>> mean:
>>
>>   (1) it "feels" slower,
>>   (2) the time from press shift-enter until you see output is longer, or
>>   (3) When you use "time a_specific_command(...)", it takes longer.
>>
>> What I don't think could happen is (3).   Obviously (1) or (2) could
>> happen, due to the client server architecture.
>> However, this would have absolutely nothing to do with numpy, and you
>> would notice the same slowdown with
>> any code in Sage.
>>
>> William
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> >  -- William
>>
>> >> On Nov 21, 12:30 pm, William Stein <wst...@gmail.com> wrote:
>> >>> On Sun, Nov 21, 2010 at 5:23 AM, tuxiano <tuxi...@gmail.com> wrote:
>> >>> > Please, don't disablewww.sagenb.org
>> >>> > I'm not an administrator of my office PC so I can't install SAGE and
>> >>> > my company filters connections not on port 80 or 8080 so  
>> >>> > www.sagenb.org
>> >>> > is the only Sage implementation that I can use.
>>
>> >>> There is alsohttp://demo.sagenb.organdhttp//demo2.sagenb.org.
>>
>> >>> William
>>
>> >>> > Perhaps other people
>> >>> > are in my condition.
>>
>> >>> > Thanks
>>
>> >>> > Tiziano
>>
>> >>> > On Nov 21, 3:18 am, Jeroen Demeyer <jdeme...@cage.ugent.be> wrote:
>> >>> >> On 2010-11-20 22:45, William Stein wrote:
>>
>> >>> >> > (1) I simply totally disablewww.sagenb.org,
>>
>> >>> >> Maybe keepwww.sagenb.orgasitis but remove the link from the Sage
>> >>> >> front page?
>>
>> >>> > --
>> >>> > To post to this group, send an email to sage-devel@googlegroups.com
>> >>> > To unsubscribe from this group, send an email to 
>> >>> > sage-devel+unsubscr...@googlegroups.com
>> >>> > For more options, visit this group 
>> >>> > athttp://groups.google.com/group/sage-devel
>> >>> > URL:http://www.sagemath.org
>>
>> >>> --
>> >>> William Stein
>> >>> Professor of Mathematics
>> >>> University of Washingtonhttp://wstein.org
>>
>> >> --
>> >> To post to this group, send an email to sage-devel@googlegroups.com
>> >> To unsubscribe from this group, send an email to 
>> >> sage-devel+unsubscr...@googlegroups.com
>> >> For more options, visit this group 
>> >> athttp://groups.google.com/group/sage-devel
>> >> URL:http://www.sagemath.org
>>
>> > --
>> > William Stein
>> > Professor of Mathematics
>> > University of Washington
>> >http://wstein.org
>>
>> --
>> William Stein
>> Professor of Mathematics
>> University of Washingtonhttp://wstein.org
>
> --
> To post to this group, send an email to sage-devel@googlegroups.com
> To unsubscribe from this group, send an email to 
> sage-devel+unsubscr...@googlegroups.com
> For more options, visit this group at 
> http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
>



-- 
William Stein
Professor of Mathematics
University of Washington
http://wstein.org

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to