加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用未经检查的上下文是否会损害C#中的性能或可移植性?

发布时间:2020-12-15 18:33:43 所属栏目:百科 来源:网络整理
导读:我想实现一个快速哈希函数,它将使用int数据类型并依赖于整数溢出. MSDN说,为了保证溢出不会触发异常,我必须为该代码使用未经检查的块. 假设我在未经检查的块中仅包围该计算.我的代码会因此而出现任何性能或可移植性问题吗? 解决方法 从技术上讲,只有被检查
我想实现一个快速哈希函数,它将使用int数据类型并依赖于整数溢出. MSDN说,为了保证溢出不会触发异常,我必须为该代码使用未经检查的块.

假设我在未经检查的块中仅包围该计算.我的代码会因此而出现任何性能或可移植性问题吗?

解决方法

从技术上讲,只有被检查的块应该减慢.因此,我认为未经检查的块(框架必须执行较少检查的块)可能会变慢.它不是上下文切换或类似的东西. JIT根本不发出检查溢出/下溢的指令.现在,显然如果有人创建了一个“特殊”处理器,其中必须模拟溢出并在其上移植Mono,或者溢出导致与Intel处理器不同的结果,则未经检查的块将更慢(因为JIT必须“模拟”它).但请注意,.NET的基本类型在 ECMA标准中定义.有符号的整数必须基于双补码,并且它们的大小必须是8,16,32,64位.使用 36 bits integers的“奇怪”处理器没有太多空间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读