title: Performance Impact of the Global Assembly Cache
body: <p>Apologies for the long-winded nature of this question. <strong>TL;DR: jump to the last paragraph</strong>.</p>
  
  <p>Been scratching my head about this for a while now and cannot think of a way to test my theory that <strong>multiple copies of the same DLL introduce a performance overhead</strong>. One of our servers have 20-30 pieces of in-house analysis software that references a monolithic kernel that handles <em>Business Logic and Data-Access</em> to our central database. The <strong>/bin</strong> directory for each application has a local copy of this ~5MB DLL stored within it, which presumably* gets loaded into memory when each application is first run. Probably not a big deal now, but when we get to 100+ (planned) agents running in this manner I start to hear alarm bells.</p>
  
  <p>I've read several articles online (e.g: <a href="http://www.codeproject.com/Articles/4352/Demystifying-the-NET-Global-Assembly-Cache" rel="nofollow">http://www.codeproject.com/Articles/4352/Demystifying-the-NET-Global-Assembly-Cache</a>) which talk about the security/integrity benefits of deploying common libraries in the <strong>.NET GAC</strong>, but nothing touches on the subject of performance, the only sure-fire topic that will get upper management's interest.</p>
  
  <p>What I want to know is, when a Global Assembly is referenced in a project, does it share the same library instance as other consumer applications, or does an application simply load everything it needs into its own, separate area at runtime?</p>