SMPマシンでは、#2と#1のパフォーマンスにメリットがあります。
1)x = 0;
また
2)if(x)x = 0;
CPU間のキャッシュコヒーレンシを管理するための舞台裏のオーバーヘッドにはいくらかのコストがかかるかもしれないと私は考えていました。私はナッツですか?
シングルスレッドコードの場合でも、オブジェクトがコピーオンライトメモリ(たとえば、ファイルのプライベートマッピング、またはフォーク後のほとんどすべての書き込み可能メモリ)にある場合、後者には利点があります。少なくとも、メモリの整合性が自動的に処理されるx86のようなシステムでは、あなたが求めている利点も現実のものだと思います。このようなマシンでは、別のCPUのキャッシュにある可能性のあるメモリに書き込むと、キャッシュされたコピー(実際にはキャッシュライン全体)が無効になります。読むだけでは害はありません。もちろん、これが複数のスレッドによって変更および共有される可能性のあるメモリである場合は、とにかく同期メカニズムによって保護する必要があります。そうすると、おそらくほとんどまたはすべての利点が失われます。
読んでいてもキャッシュコヒーレンシを管理しなければならないので、何も買わないと思います。また、コンパイラが何をするかに大きく依存します。あなたが本当に気にかけているのなら、私はあなたが使っているシステムでそれをベンチマークします。