
Speed and Visio Application Scaling problems
Hi,
I have been developing a Visio based application for the last many
months and I am starting to run into some application scaling
problems, that is the number of shapes in the visio application
increases, the slower it goes.
Here are some characteristics of my application:
1. Written in vb as a in-process dll (com as opposed to a vsl)
2. Visio 2002
3. During all my steps that have speed problems I have shut down
screen updating and also stopped any event processing.
appVisio.EventsEnabled = false
appVisio.ShowChanges = false
4. Purpose, Build models via Visio diagrams and display modeling
results on the diagrams
5. I have 2 test models. A "small" model with about 500 shapes and
a Large model with about 3000 shapes
My basic problem is that as I increase the number of components in my
models (or shapes in the visio diagram) Visio gets slower and slower
for the same function. Here are some examples:
1. Complicated Drop. The user drops a shape off a visio template.
Based on what is dropped, my application has to create other related
pages and shapes. For example, 1 Object I drop requires my
application to create 1 new page and about 15 other shapes and make 8
connections. For my small model this takes about 4 seconds (p4-2Ghz,
512 MB ram), Big model it takes 25 seconds. I am NOT doing loops
over all shapes in either case so the processing should be the same
for big or small model.
2. Update a drawing. In this case I am simply changing the text of
some shapes and changeing the color of some shapes. All shapes on the
same page. If I need to change 30 text boxes (putting in numbers like
222.2) and change 60 shape styles, it takes a small but hard to
measure time on my small model and about 3 or 4 seconds on the large
model. I have direct references to all the shape objects in my VB
code. I am not doing any searching in visio to find the shapes.
My big worry here is that I Need to get much bigger. The size of my
biggest models (without using visio) is equivelent to about 20,000
visio shapes. I am scared to death about the speed then.
One idea I have been bouncing around is to break my Visio diagram into
multiple seperate documents and only open the ones I want to change or
build on. My underlying VB application should allow this but I was
looking for info on possible problems.
Any other ideas or suggestions are welcome.
Thanks
David Nelson