ASP.NET:Ro​​slyn页面更改缓慢

时间:2016-02-03 18:27:37

标签: asp.net asp.net-mvc vb.net roslyn

我有一个VB.NET ASP.NET(4.6.1)MVC应用程序,它是使用新的Roslyn编译器构建的。

每当我更改(vbhtml)文件并重新加载页面时,重新加载页面大约需要9秒钟。 在这段时间内,vbc.exe和VBCSCompiler.exe正在运行:

enter image description here

我找不到任何关于这种缓慢性能的提示(使用ANTS配置文件),我的系统应该足够快,以便更快地处理请求(Windows 10 x64,i7-2600,16GB RAM,所有文件的Samsung SSD)

我也试过了新的Roslyn Builds,但没有改变:

<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"version="1.0.1" targetFramework="net452" />

任何想法,我怎样才能获得更好的重装时间?

UPDATE1:当删除软件包Microsoft.CodeDom.Providers.DotNetCompilerPlatform时,我的页面重新加载时间会降至<500毫秒!

2 个答案:

答案 0 :(得分:7)

新编译器需要几秒钟才能启动,因为它需要JIT许多IL程序集。 Ngen编译器及其依赖程序集将有助于缩短启动时间。你可以做的是找到编译器程序集并执行

var records = {};


$(function(e){

   records['123'] = {};
   records['456'] = {};

   records['123']['rec_id'] = 4456;
   records['123']['created_at'] = '';
   records['123']['assigned_at'] = '';
   records['123']['sys_id'] = 1745;

   records['456']['rec_id'] = 4456;
   records['456']['created_at'] = '';
   records['456']['assigned_at'] = '';
   records['456']['sys_id'] = 1745;


   $.each(records, function(callID, record){

            record['campaign_id'] = '1';
            record['offset'] = 123;
            record['attempt'] = '7';
            record['phone'] = '800-123-4567';
            record['identity'] = 123;
            record['code'] = 'Some Code';
            record['notes'] = 'Some notes';
            record['completed_by'] = 'Mike A';
            record['name'] = null;

            record['completed_at'] = "";

   });


   $('#d').click(function(e){
        $('#s').text(  JSON.stringify(records)  );
   });

});

您需要从提升的控制台运行上述命令。如果您的计算机是64位,则可能需要使用64位ngen.exe。通常,64位ngen.exe位于C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319。

答案 1 :(得分:5)

仅供参考,我一直在与微软合作解决这个问题,并不像NGENing那样简单。他们正在努力解决这个问题,其中一个是Roslyn编译器本身。您可以在此处跟踪该错误:https://github.com/dotnet/roslyn/issues/10413。如果公共跟踪器上出现其他错误,我一定会链接到它。