6
コンパイラーは、他のタイプのループと比較して、do-whileループに対してより優れたコードを生成しますか?
zlib圧縮ライブラリ(特にChromiumプロジェクトで使用されています)には、Cのdo-whileループがほとんどのコンパイラで「より良い」コードを生成することを示すコメントがあります。これが表示されるコードのスニペットです。 do { } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && *(ushf*)(scan+=2) == *(ushf*)(match+=2) && scan < strend); /* The funny "do {}" generates better code on most compilers */ https://code.google.com/p/chromium/codesearch#chromium/src/third_party/zlib/deflate.c&l=1225 ほとんどの(または任意の)コンパイラがより優れた(たとえば、より効率的な)コードを生成するという証拠はありますか? 更新: 元の著者の1人であるMark Adlerがコメントに少しコンテキストを与えました。