はじめに 「あれ?インテルコンパイラの吐くコードがまたgccより遅いんじゃね?」と書こうとしたら、いろいろあって最終的にインテルコンパイラが圧倒的に速いコードを吐いた話。 コンパイラのバージョンとか 使うコンパイラのバージョンは、g++が4.8.5、icpcが16.0.3。 実行環境はIntel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz。 128ビット整数からboolへのキャスト (一個だけ) 訳あって128ビット整数をboolにキャストしたくなった。単純にキャストして正しい結果が得られるか確認するのと、どう実装されるか調べるため、こんなコードを書いた。 #include <stdio.h> #include <cstdint> void func32(__uint32_t m, bool &b){ b = m; } void func64(__uint64_