C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化? 因为他不敢保证运行这个程序的电脑支持 AVX 指令集…… 两个 int32 可以合并为一个 int64 四个 int32 可以合并为一个 __m128 八个 int32 可以合并为一个 __m256 让编译器自动检测当前硬件支持的指令集 -march=native 让编译器自动判断当前硬件支 持的指令。老师的电脑支持 AVX 指令集,所 以他用了。不过注意这样编译出的程序,可能 放到别人不支持0 码力 | 108 页 | 9.47 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming这就是,无分支优化。 • setle 指令是单独一条指令,不需要跳转。 比起需要跳转的 jle 指令,他避免了 CPU 预测分支和预测失败带来的额外开销。 条件跳转指令 vs 无分支指令 • x86 指令集架构中,条件跳转指令有 j 开头的一系列,无分支指令有 set 系列和 cmov 系列。 • jle .L1 上一次比较结果为小于等于时,程序跳转到 .L1 处,否则不跳转继续往下执行。 •0 码力 | 47 页 | 8.45 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串char 在 x86 架构是有符号的 (char = signed char) ,而在 arm 架构上则认为是无符号的 (char = unsigned char) ,因为他 认为“ arm 的指令集处理无符号 8 位整数更高效”,所以擅自把 char 魔改成无 符号的…… • 顺便一提, C++ 标准保证 char , signed char , unsigned char 是三个完全 不同的类型,0 码力 | 162 页 | 40.20 MB | 1 年前3
共 3 条
- 1













