MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: The simple command x=0;Dynamic[x=x+1]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124876] Re: The simple command x=0;Dynamic[x=x+1]
  • From: Fred Simons <f.h.simons at tue.nl>
  • Date: Fri, 10 Feb 2012 05:55:21 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <20122716396.398638@jfultz3winlap>

Dear John,

Many thanks for your reaction. Your postings are always worth to be 
studied carefully.

My idea was that updating happens at a speed of about 20 times per 
second, but that seems to be incorrect. It turns out to be much higher. 
You give a nicely detailed description of the updating cycle, together 
with the question:

> Where are you getting "20" from?  What is it that updates at that speed?  You've
> completely lost me here.

Well, that factor 20 is mentioned in the tutorial Advanced Dynamic 
Functionality. After the description of the updating mechanisme, 
slightly less detailed than the one in your post, it continues:

By default, dynamic outputs triggered by changes in variable values are 
updated no faster than twenty times per second (this rate can be changed 
with the SystemOption "DynamicUpdateInterval").

When I read this for the first time, already a long time ago, I did a 
little test by counting the number of updates and comparing them with 
the total time:

In[46]:= ctr=0;
Dynamic[ctr=ctr+1;j, TrackedSymbols:>{j}]
j=0; While[j<10^6, j=j+1] // Timing
ctr

Out[47]= 1000000
Out[48]= {1.342,Null}
Out[49]= 22

This result was close to what I expected: about 20 times per second. 
However. now I see that the fact that this test resulted in a speed of 
20 updates per second was pure luck. If I had done this test only 
slightly different, for example with a Do-loop instead of a While-loop, 
I would have been puzzled already then.

Or when I would have changed the DynamicUpdateInterval to 10 updates per 
second:

In[41]:= SetSystemOptions["DynamicUpdateInterval"->0.1];ctr=0;
Dynamic[ctr=ctr+1;j, TrackedSymbols:>{j}]
j=0; While[j<10^6, j=j+1] // Timing
SetSystemOptions["DynamicUpdateInterval"->0.05];
ctr

Out[42]= 1000000
Out[43]= {1.591,Null}
Out[45]= 954

So at the moment it is this paragraph in the tutorial and the meaning of 
DynamicUpdateInterval that confuses me.

Am I right in my understanding of your description of the update cycle 
that when the frontend is informed by the kernel that a variable (in a 
displayed Dynamic, of course) needs updating, that is seen by the 
frontend as a signal that the the screen has to be redrawn?

Once again many thanks,

Fred Simons
Eindhoven University of Technology



  • Prev by Date: Re: Why does the order of down values come back?
  • Next by Date: Re: ListInterpolate and missing values
  • Previous by thread: Re: The simple command x=0;Dynamic[x=x+1]
  • Next by thread: need to find polyhedrons with less than a 24 vertex array in PolyhedronData[]