Re[2]: Очередной "шедевр" от MS
От: pilgrim_ Россия  
Дата: 11.03.17 14:06
Оценка: 51 (5)
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.