当前位置: 首页 > news >正文

d的nan讨论4

我会远离快速数学.但是,如果你想用它,就得靠你自己了,因为D假设IEEE数学.
因此断定可引入新的_未定义行为_.

"快速数学",也因编译器而异,有时会使事情变慢!
甚至需要它来提高性能吗?不确定,因为只是矢量化,无论是自动的还是显式的,都会带来更好的结果.至少,这是我使用LLVM后端的经验.

最好不用-release.

-release唯一应该做的就是删除调试语句.不多也不少.
是的.-release出于多种原因应该*永远认真*使用,但请阅读规范的该部分,规范:
第一个AssignExpression必须求值为真.如果没有,则断定失败且程序进入无效状态.
如果失败了,即使没有真正编译进去,程序*仍然*进入无效状态.
一旦无效状态,继续执行程序是未定义的.
优化器可自由假设断定都是正确的,因为它向前移动,如果从未经过实际测试,它可能会非常随机.
默认不使用调试语句.
显然,断定失败后扔掉你的计算机.
绝对地.地下室里到处都是敢于失败的垃圾电脑.
DMD有个开关,可以在断定失败时插入暂停指令.

-release适合速度基准测试的人.我根据几十年的经验说话.

如果不在输出错误,更不可能在初化为0时就找到它.
我还在此写过在不想使用时退出时,NaN合法用途.
它类似Unicode中的"替换字符".我们有在看到无效代码点时,触发异常的经验.这是错误的答案.大错特错,它是Phobos版本2的动力之一.

我已经和布鲁斯谈过很多次了.
充分了解向量化后,结论是,显式矢量化通常是错误选择.它占用了开发人员的时间,且好处很少.
LLVMGCC都可利用的是assert(arg1 !is arg2);,这么简单的断言!然而其中有很重要的别名信息.我喜欢断言.

文档应该直截了当地说"除非你在人为的速度基准上作弊,否则永远不要使用它",-release.
它应该重命名为-optimize-for-benchmark.
并不可怕.只需要了解正在发生的事情.
合同旨在支持正确性,而不是帮助加剧漏洞.
比较常见用例是禁用合约/断言检查.
问题是DMD似乎不能安全切换到禁用检查.
我遇到"非法指令"的经验是,他们只是假设编译器有错误并产生了无效的机器代码.此外,"hlt"语义根本不终止任何事情,它只是等待下一个中断的触发.它在用户空间崩溃的唯一原因是它需要访问0环.
现在,使用UD2了.

相关文章:

  • Python 运算符和表达式
  • 【LeetCode】2022 8月 每日一题
  • AcWing-1-递归实现指数型枚举
  • 易基因|文献科普:DNA甲基化测序揭示DNMT3a在调控T细胞同种异体反应中的关键作用
  • 基于springboot小型车队管理系统毕业设计源码061709
  • 大数据ClickHouse进阶(一):ClickHouse使用场景和集群安装
  • js面向对象之封装,继承,多态,类的详解
  • 永久免费H5直播点播播放器SkeyeWebPlayer.js实现webrtc流播放
  • JavaScript-HelloWorld、浏览器控制台使用、数据类型
  • Centos部署Docker
  • 视频剪辑教程自学技巧:关于正确的短视频剪辑流程分享
  • 30、三维表面重建-Convolutional Occupancy Network
  • Android 用户如何将Room根据不同账户动态分库方案
  • 539、RabbitMQ详细入门教程系列 -【100%消息投递消费(一)】 2022.08.31
  • 基于信贷业务的量化风险评估简述
  • 【刷算法】从上往下打印二叉树
  • Java读取Properties文件的六种方法
  • Joomla 2.x, 3.x useful code cheatsheet
  • Laravel 菜鸟晋级之路
  • learning koa2.x
  • LeetCode算法系列_0891_子序列宽度之和
  • Lucene解析 - 基本概念
  • Median of Two Sorted Arrays
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • spring boot下thymeleaf全局静态变量配置
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • XForms - 更强大的Form
  • 基于Android乐音识别(2)
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 温故知新之javascript面向对象
  • ​520就是要宠粉,你的心头书我买单
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #QT(串口助手-界面)
  • ( 10 )MySQL中的外键
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (编译到47%失败)to be deleted
  • (理论篇)httpmoudle和httphandler一览
  • (算法设计与分析)第一章算法概述-习题
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)C#调用WebService 基础
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Mobi域名介绍
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core 项目指定SDK版本
  • .NET 的程序集加载上下文
  • .net 生成二级域名
  • .NET轻量级ORM组件Dapper葵花宝典
  • .so文件(linux系统)
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ C++ ] STL---string类的模拟实现