Überprüfen Sie den Zweig Update-1
aus dem Roslyn-GitHub-Repository , erstellen Sie die Datei csc.exe und kompilieren Sie eine zufällige Datei Lösung mit der csc.exe Version, die ich gerade selbst gebaut habe.
Ich erwarte, dass die Leistung mit der ursprünglichen Roslyn-Version vergleichbar ist, die mit VS 2015 Update 1 geliefert wurde und sich im Pfad C:\Program Files (x86)\MSBuild.0\Bin
Die Build-Leistung der Roslyn-Version, die ich selbst gebaut habe, ist im Vergleich zum Original deutlich schlechter. In der Lösung, die ich in meinen Tests verwendet habe: ungefähr 30 Sekunden gegenüber 65 Sekunden.
Release
configuration (versucht mit beiden, Mixed Configuration
sowie x64
für die Lösungsplattform.) Um eine Testlösung zu kompilieren, habe ich alle Projektdateien so geändert, dass sie einen bestimmten Speicherort für den csc-Pfad verwenden:
<CscToolPath>C:\Path\To\Output\Location\Of\Roslyn\Binaries\</CscToolPath>
Zu Testzwecken baue ich die Testlösung von der Kommandozeile mit
MSBuild.exe /t:Rebuild /m:1 /verbosity:m MySolutionName.sln
Ich mache derzeit auch eine Reinigung vor:
MSBuild.exe /t:Clean /m:1 /verbosity:m MySolutionName.sln
Um den ursprünglichen mit VS 2015 Update 1 gelieferten Compiler zu testen, ändere ich die Konfiguration in den Projektdateien in:
<CscToolPath>C:\Program Files (x86)\MSBuild.0\Bin\</CscToolPath>
Der größte Unterschied besteht darin, dass der von Visual Studio in NGEN installierte offizielle Compiler als Teil der Installation kompiliert wurde.
Aber selbst wenn Sie NGEN verwenden, werden Sie nicht exakt die gleichen Ergebnisse erzielen, da Microsoft profilgestützte Trainingsdaten zur Unterstützung partieller NGEN verwendet, um ein gutes Gleichgewicht zwischen binärer Größe und JIT-Zeit zu erhalten das öffentliche Repo (ähnlich der Unterschrift mit dem offiziellen privaten Microsoft-Schlüssel).
Zusätzlich zu Kevins Antwort, die völlig korrekt ist, hier ein paar weitere Details zum Signieren / NGEN-Kompilieren von Roslyn-Binärdateien, da dies für andere Leute interessant sein könnte.
mit zum Beispiel:
%Vor%sn.exe
kann auch zum Exportieren des öffentlichen Schlüssels sowie zum Extrahieren des öffentlichen Schlüsseltokens verwendet werden (z. B. von einer Assembly, die Sie testen könnten - mit dem Schlüssel signieren) Dann kann NGEN wie folgt aufgerufen werden:
ngen.exe install "C:\path\to\Roslyn\Release\csc.exe"
(zum Beispiel in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe
)