title: Roslyn slow startup time
body: <p>I've noticed that the startup time for Roslyn parsing/compilation is a fairly significant one-time cost.  EDIT: I am using the Roslyn CTP MSI (the assembly is in the GAC).  Is this expected? Is there any workaround?</p>
  
  <p>Running the code below takes almost the same amount of time with 1 iteration (~3 seconds) as with 300 iterations (~3 seconds).</p>
  
  <pre><code>[Test]
  public void Test()
  {
      var iters = 300;
      foreach (var i in Enumerable.Range(0, iters))
      {
          // Parse the source file using Roslyn
          SyntaxTree syntaxTree = SyntaxTree.ParseText(@"public class Foo" + i + @" { public void Exec() { } }");
  
          // Add all the references we need for the compilation
          var references = new List&lt;MetadataReference&gt;();
          references.Add(new MetadataFileReference(typeof(int).Assembly.Location));
  
          var compilationOptions = new CompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary);
  
          // Note: using a fixed assembly name, which doesn't matter as long as we don't expect cross references of generated assemblies
          var compilation = Compilation.Create("SomeAssemblyName", compilationOptions, new[] {syntaxTree}, references);
  
          // Generate the assembly into a memory stream
          var memStream = new MemoryStream();
  
          // if we comment out from this line and down, the runtime drops to ~.5 seconds
          EmitResult emitResult = compilation.Emit(memStream);
  
          var asm = Assembly.Load(memStream.GetBuffer());
          var type = asm.GetTypes().Single(t =&gt; t.Name == "Foo" + i);
      }
  }
  </code></pre>