Здравствуйте, T4r4sB, Вы писали:
TB>А в ассемблерном коде что там происходит?
Не копенганен в асме, но код достаточно очевиден (оставил только код с синусом):
1) Вариант с
//if(i==0) cout<<"msvc????????????????????";
https://godbolt.org/g/zLKeh2 (смотреть листинг со строки 4886)
2) Вариант с
if(i==0) cout<<"msvc????????????????????";
https://godbolt.org/g/qdmuVc (смотреть листинг со строки 4884)
В 1-м случае синус вычисляется на каждой итерации
вложенного цикла (
call sin), во 2-м случае вычисление синуса вынесено на
верхний цикл (
call __vdecl_sin2).
Что характерно в обоих вариантах используются разные реализации синуса, которые
как пишут дают разный результат
ps: опции /O2 /DNDEBUG
Проверить результат можно как на
родном онлайн-компиляторе, так и тут:
1 —
http://rextester.com/IKKZ79501
2 —
http://rextester.com/NZXZ55900