哪些属性有助于运行时.Net性能?

哪些属性有助于运行时.Net性能?

What attributes help runtime .Net performance?

我正在寻找可以通过为加载器,JIT编译器或ngen提供提示来确保.Net应用程序最佳运行时性能的属性。

例如,我们有DebuggableAttribute,应将其设置为不调试并且不禁用优化以获得最佳性能。

1
[Debuggable(false, false)]

还有其他我应该知道的吗?


Ecma-335在附件F"不精确的错误"中为放松的异常处理(所谓的电子松弛调用)指定了更多的CompilationRelaxation,但是Microsoft尚未公开它们。

那里特别提到了CompilationRelaxations.RelaxedArrayExceptions和CompilationRelaxations.RelaxedNullReferenceException。

当您在CompilationRelaxationsAttribute的ctor中尝试一些整数时,将会发生什么呢?


另一个:默认情况下,文字字符串(在源代码中声明的字符串)会嵌入到池中以节省内存。

1
2
3
4
5
string s1 ="MyTest";
string s2 = new StringBuilder().Append("My").Append("Test").ToString();
string s3 = String.Intern(s2);
Console.WriteLine((Object)s2==(Object)s1); // Different references.
Console.WriteLine((Object)s3==(Object)s1); // The same reference.

尽管在多次使用相同的文字字符串时可以节省内存,但是维护该池会花费一些cpu,一旦将字符串放入池中,它将一直停留在该池中,直到进程停止为止。

使用CompilationRelaxationsAttribute可以告诉JIT编译器您确实不希望它内生所有文字字符串。

1
[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]


我找到了另一个:NeutralResourcesLanguageAttribute。根据此博客文章,它通过指定当前(中性)装配的区域性来帮助装载机更快地找到合适的卫星装配。

1
[NeutralResourcesLanguageAttribute("nl", UltimateResourceFallbackLocation.MainAssembly)]


推荐阅读

    linux命令提示符联网?

    linux命令提示符联网?,网络,系统,地址,工具,密码,网址,数据,环境,传播,网站,l

    linux命令格式提示?

    linux命令格式提示?,工作,系统,命令,较大,环境,标准,工具,名称,合法,选项,什

    linux命令提示设置?

    linux命令提示设置?,系统,工作,地址,信息,命令,软件,目录,管理,变量,文件,Lin

    linux性能检测命令?

    linux性能检测命令?,系统,情况,信息,状态,工具,实时,百分比,指标,分析,命令,

    linux命令行运行中断?

    linux命令行运行中断?,连续,工作,系统,信息,程序,命令,设备,工具,网络,情况,L

    vim运行linux命令?

    vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linu

    查看linux命令提示符?

    查看linux命令提示符?,系统,名称,网络,命令,信息,对比,工具,实时,日志,文件,l

    linux下并行运行命令?

    linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,l

    jar运行命令linux?

    jar运行命令linux?,项目,系统,平台,工具,上期,命令,选项,日志,文件名,目录,Li

    jar运行命令linux?

    jar运行命令linux?,项目,系统,平台,工具,上期,命令,选项,日志,文件名,目录,Li

    linux下并行运行命令?

    linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,l

    查看linux命令提示符?

    查看linux命令提示符?,系统,名称,网络,命令,信息,对比,工具,实时,日志,文件,l

    linux红帽命令提示符?

    linux红帽命令提示符?,系统,工作,密码,命令,环境,首页,工具,标准,信息,地方,

    linux命令行后台运行?

    linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,l

    脚本运行linux命令?

    脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,lin

    linux命令提示软件包?

    linux命令提示软件包?,软件,系统,环境,管理系统,中心,情况,名字,密码,电脑,

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    linux显示运行命令?

    linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如

    linux改变命令提示符?

    linux改变命令提示符?,系统,密码,电脑,软件,代码,位置,档案,信息,终端,用户,L

    linux运行vim命令?

    linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令