博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET 4.6的RyuJIT尾递归优化的Bug
阅读量:5302 次
发布时间:2019-06-14

本文共 571 字,大约阅读时间需要 1 分钟。

今天看到园子里有一篇新闻稿提到,在.Net 4.6的x64程序中默认启用新的JIT程序RyuJIT在处理尾递归指令的时候有一个Bug,导致无法得到正确的结果。

微软在其官方Blog更是较为详细的介绍了这一bug。虽然尾递归使用得并不多(貌似在F#中有很多应用),但这个bug算是比较严重的了:

  1. 这个问题只有在应用了代码优化之后才会出现,由于多数开发者与项目都是在 DEBUG 模式开发的,因此在本地环境中看不出来。
  2. 即使发现了这个问题,一旦为进程附加了调试器就会改变它的行为,这几乎让这个问题完全隐形了。

对于这个bug,无外乎三种方案:

  1. 不使用.Net 4.6,继续使用.Net 4.5
  2. .

这三种方式中,虽然方法2和方法3可以在使用.Net 4.6的前提下解决这个bug,但需要注意的是,由于这个是.Net 4.6正式版的Bug,而JIT又是一种本地行为,需要在所有执行你的程序的机器上都应用该修改,加上这个bug是非常隐晦的,不会马上出错,出错也不一定知道是这儿出的错。这两种修改方式真正执行起来是非常困难的。

另外,在另一篇blog中提到了几个.Net 4.6的几个bug:,看来,在生产环境中使用.Net 4.6还得掂量掂量了。

转载于:https://www.cnblogs.com/TianFang/p/4695086.html

你可能感兴趣的文章
HDU 6333 莫队分块 + 逆元打表求组合数
查看>>
[CMD]重启电脑
查看>>
Android实例-设置消息提醒(XE8+小米2)
查看>>
vs安装失败,发生严重错误,错误号:Error 0x80070643
查看>>
Oracle队列锁enq:US,Undo Segment
查看>>
python实现简单爬虫功能
查看>>
Keras 使用过程问题汇总
查看>>
开源词袋模型DBow3原理&源码(二)ORB特征的保存和读取
查看>>
php服务器端与android客户端通信问题
查看>>
AAAI2019 | 基于区域分解集成的目标检测 论文解读
查看>>
数字澳洋背后的用友云混合云架构支撑
查看>>
8.14-rqt_common_pluggins 详解
查看>>
神奇的magento!
查看>>
帝国cms调用栏目自定义字段(栏目简介)如何操作
查看>>
UVA 10763 Foreign Exchange
查看>>
红黑树的实现
查看>>
最小生成树Prim算法(邻接矩阵和邻接表)
查看>>
HDU 1575 EASY
查看>>
[转]各种有用的PHP开源库精心收集
查看>>
WTL--SDI框架分析
查看>>