- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么需要窥孔优化?因为编译器足够聪明来优化代码?能否请您举一些需要进行窥视孔优化的示例?
最佳答案
窥视孔通常是针对特定目标的。
它们可能仅在目标寄存器 (RTL) 方面有意义,而不是 IR。
例如x86 xor eax, eax
而不是 mov eax,0
. (What is the best way to set a register to zero in x86 assembly: xor, mov or and?)。没有理由在 IR 中执行此操作,并且在最后一刻(最终代码生成)之前执行此操作会混淆其他优化值为零的事实。对除 x86 以外的任何机器执行此操作将是一种反优化(创建错误的依赖性)。 OTOH 你不想让它太晚,否则你可能无法在设置 FLAGS 的东西之前对其重新排序,例如
xor eax,eax
cmp ecx, edx
sete al ; boolean 0 or 1 zero-extended to 64-bit RAX
代替
cmp ecx, edx
sete al ; false dependency on old RAX
movzx eax, al ; no mov-elimination, extra critical path latency
或
cmp ecx, edx
mov eax, 0 ; less efficient instruction to leave FLAGS untouched
sete al ; later reads of RAX will have partial-register stalls on P6-family
或者作为另一个示例,x86 可以使用 LEA 乘以 3、5 或 9,以利用 2 位移位并添加 2 寄存器寻址模式。优化器知道这是一个有效的构建 block 可能很有用,并且旨在将事物重构为乘以 9,但实际上将乘以 10 转换为 (x * 5) * 2
。对于 (x<<3) + (x<<1)
的目标,这不是您想要的方式效率更高 ( x*10 = x*8 + x*2
)。
见
imul
的权衡对比 2x lea
以及现代 CPU 如何快速 imul
使最多花费 2 条指令替换乘法是值得的,如果瓶颈是吞吐量而不是延迟,则只需要 1 条指令。除非你能像 LEA 那样把加法折进去……关于assembly - 为什么窥孔优化是针对汇编代码而不是 IR 代码进行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71890645/
我想检测(并关闭)封闭网格的开口和孔洞/镂空部分。我知道对于一个开放的网格,这可以通过找到边界边(只属于一个三角形的边)来完成,如 here 所述。 . 但是对于不存在此类边界边的封闭网格呢?下面是一
我试过https://docs.konghq.com/getting-started-guide/2.1.x/expose-services/我也有本地服务器:kong/2.2.1我可以同时注册服务和
我在我的应用程序中使用 logback(SiftingAppender 和 RollingFileAppender)。每当请求进来时,它们将根据 url 查询中的 id 记录到不同的文件中。 这工作得
我在 ARKit 上遇到了一个问题,我需要帮助。我正在做一个小演示,我在场景中放置了一个简单的 SCNTorus 几何体,我试图将一个小球 (SCNSphere) 扔进环面孔中。问题是球在中间弹跳而不
编辑 经过更多研究但仍然没有解决方案,我添加了实质性编辑以及指向 .shp 文件的链接。 The shape file is included here 我有一个包含 9 个多边形的 SpatialP
有没有一种简单直接的方法可以使用 opencv 3.1 python 从图像中提取内部轮廓(孔)? 我知道我可以使用“区域”作为条件。但是,如果我更改图像分辨率,“区域”就不一样了。 例如,这张图片:
我正在审查 Angular 中的模板项目 引导组件有一个如下所示的 HTML 模板。很有道理。应用程序标题、应用程序侧边栏等标签将包含由带有匹配选择器的组件提供的内容。这一切都检查出来了。
案例场景: $ cat Status.txt 1,connected 2,connected 3,connected 4,connected 5,connected 6,connected 7,dis
我是一名优秀的程序员,十分优秀!