Library Consolidation

Reducing the number of dll’s in your application by consolidating them into fewer numbers can produce many benefits. As an example, before ACIS R10, we built ACIS into a set of dll's that corresponded to each ACIS "component". For instance, blending functionality was in blend.dll and advanced blending functionality was in abl.dll.
In an effort to simplify our packaging, we consolidated like pieces of ACIS functionality into what we call "composite" libraries. For example, all blending and advanced blending functionality are now merged into a single "composite" library named SpaABlend.dll. In doing so, we achieved a 5% overall performance improvement.
We continue to look at ways to consolidate dll’s. One area of investigation is placing all core ACIS functionality into a single dll: SpaACIS.dll. In our preliminary tests, we are observing a 5% performance improvement.
Not only do we obtain a nice performance improvement each time we've consolidated many dll's into fewer dll's, but we also 1) make smaller the ACIS disk footprint (roughly 10% smaller), and 2) our ACIS based test applications start up much faster - up to 50% faster once cached. These types of improvements can be achieved within your applications through dll consolidation.
We achieved these performance gains largely due to how ACIS is designed: while componentized, we make 100's of thousands of lightweight calls into our "base" component just performing a simple modeling operation. Having all core component "glued" together into a single ACIS dll eliminates dll jumps. Additionally, the linker optimizer can inline more of these lightweight calls, avoiding function call overhead altogether.
In conclusion, there are lots of benefits to dll consolidation: improved run-time performance, smaller disk footprint, and faster application start up. Consider this the next time you're asked to tackle one of these problems and you may be surprised.
Authored by Kevin Tatterson
Return to the Spring 2009 Issue