Re: Stumped on debugging what is causing Dynamic to re-evaluate.
- To: mathgroup at smc.vnet.net
- Subject: [mg119753] Re: Stumped on debugging what is causing Dynamic to re-evaluate.
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Mon, 20 Jun 2011 19:37:33 -0400 (EDT)
- References: <itek4n$s7r$1@smc.vnet.net>
On 17/06/2011 05:11, W Craig Carter wrote: > Hello Group, > I've been stumped on something for a few days. > > The example is far too long to cut and paste---which is the preferred > mode for asking questions in this group. So, I am hoping only for > advice on how to find what is causing unexpected re-firing of a Dynamic. > > I have something of this form: > -------------- > With[ > {symbolsToBeUsedByKernel=constantThings}, > > DynamicModule[ > {valuesSetByControlObjects, > a, > b, > c,...}, > PopupMenu[Dynamic[a],"choice1","choice2"]; > InputField[Dynamic[b]]; > > Dynamic@slowComputationGraphicsObject[symbolsToBeUsedByKernel,a,b] > ] > > ] > ---------------- > > > In the actual example, I have many such Dynamic Control objects. > > If I use a "dummy" = > slowComputationGraphicsObject[symbolsToBeUsedByKernel,a,b], there is no > re-firing of Dynamic@slowComputationGraphicsObject. > > If I use my "500-line---mutliple module---calls several packages---CPU > intensive" ComputationGraphicsObject, an infinite loop of re-firing > takes place (and the FrontEnd becomes unresponsive). > > How does one start going about finding the cause of the re-firing???? > > I've buried all of the list-like controls in the > With[{i=i},Table[InputField[var[[i]],{i,n}]] paradigm. > I've tried limiting the TrackedVariables. > I've tried Synchronous and ASynchronous updating. > None of these work. > > I can solve the problem with a Button to fire the computation and taking > away the Dynamic---but this isn't very satisfying. > > Any general advice? > > Thanks, Craig > > > > Why not try to create some code that reproduces the problem in a small example - maybe create an array of objects (if this is necessary), and an expensive calculation that just consists of a suitably large loop. Working with a sample that definitely goes wrong, is usually much more productive than trying to guess how to make the program fail, before trying to fix the failure! I did once create a notebook with about 2000 buttons (most of which were out of view at any one time) with some dynamic colouring, and I got a hang that was possibly similar to the one you are encountering. I gave up in the end, and coloured them using a less elegant method that did not use Dynamic. David Bailey http://www.dbaileyconsultancy.co.uk