wjcroft / analog-box

Automatically exported from code.google.com/p/analog-box
4 stars 0 forks source link

Huge Circuits make Editing Sluggish #34

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Problem:
Huge circuits with hundreds, if not thousands, of objects bog down 
the editor. Symptoms are noticable delays when creating objects and 
connecting objects together.

Recommend:
*When objects are connected together, ABox has to recreate a list 
 that determines the order in which objects compute -- a process refered 
 to as 'tracing the circuit'. Building the list is similar to building 
 a 'spanning tree' for a directed cyclic graph. For large graphs, finding 
 the spanning tree, then linearizing it, can take much time. It is not 
 known if ABox's spanning algorithm is optimal -- perhaps it can be 
 improved.
*Alternately: Since objects can be grouped together, and editing can 
 only happen inside or outside of a group (never both at the same time), 
 it should be unnecessary to trace both the inside and outside of a 
 group when only one side has changed.
*Circuit tracing happens in the PlayThread.
*A circuit trace is only required when connections between objects 
 change. Merely creating a new unconnected object should not require a 
 trace operation. Thus, the delay after creating an object may be a 
 symptom of a different problem.

Original issue reported on code.google.com by andyt7...@gmail.com on 8 Jul 2011 at 9:09