The C code is different, doing a bit more than the JavaScript, Python and Go versions:<p><pre><code> int main() {
long array[10000];
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 100000; j++) {
array[i] = array[i] + j + i; // on that page
array[i] = array[i] + j; // what it should be
}
}
}
</code></pre>
I suspect/guess they added that to avoid the case where the C compiler is too smart, and forgot to make the other programs do the same thing.<p>Also: what do they do to prevent the C compiler from removing that entire bit of code? If they don’t read the resulting data, it may well do that.
To be fair, GCC even at -O1 knows the looped statement is non-observable, it's entirely optimized out: <a href="https://godbolt.org/z/afjz9h471" rel="nofollow">https://godbolt.org/z/afjz9h471</a>