从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
Reasons for different Floating Point Calculation Behaviour after update from VS 2015 Update 3 to VS2015 Update 3 d
我们最近在项目中将VS版本从VS2015
更新3
更新到3d
,现在看到我们的一些专用集成测试失败了。似乎随着编译器的更新,浮点计算和/或浮点文字的行为发生了变化。
我们比较了之前和之后的值,它们现在分歧到足够大的扩展,使某些检查失败。我检查了VS2015
的发行说明页面,但没有看到任何相关的更改。
准确地说:我们将编译器/链接器版本从
CL.exe19.00.24210
/链接.exe14.00.24210.0
至
CL.exe19.00.24213.1
/链接.exe14.00.24213.1
是否有人知道此编译器更新所做的任何相关更改或错误修复?
更新: 我们现在进一步调查,发现调试模式下的行为在编译器版本之间没有差异。在调试模式下,所有值都是编译器升级后在发布模式下的值,因此我们认为在发布模式下应用的优化存在问题。 事实上,使用以下选项和旧编译器停用 SSA 优化会生成与新编译器完全相同的值:
-d2SSA优化器-
因此,我们可以得出结论,如果停用 SSA 优化并且 MS 在两个编译器版本之间的 SSA 优化中应用了更改,则两个编译器版本的行为相同。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 从C++本机插件更新Vector3数组
- 递归函数计算序列中的平方和(并输出过程)
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如何使用参数中传递的初始值,而不是以下计算的更新值
- 如何在长时间计算中进行C 的一次进度更新
- 在游戏更新循环中计算布尔的真/假变化
- 只有当循环中更新的变量是局部变量时,计算才会优化
- 当变量之一稍后更新时,计算结果不会更改
- 在不频繁更新的大型共享数据结构上预测计算潜在需要的值