Re[6]: Очередной "шедевр" от MS
От: AlexGin Беларусь  
Дата: 12.03.17 08:10
Оценка:
Здравствуйте, Serg27, Вы писали:

S>Здравствуйте, AlexGin, Вы писали:


AG>>Здравствуйте, Erop, Вы писали:


E>>>Истинный виновник тут, конечно, тот, кто столь сложным заполняет массив константой, известной на момент компиляции...

AG>>Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу
S>Егор абсолютно прав. Посмотрите внимательно. Там где "Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу" проблем нет (это в ТС). В моем коде оставлено только два варианта с одинаковым результатом вычислений, причем результат мог быть вычислен во время компиляции. цитата:
S>

S>Т.е. оптимизация для fun1 дала выигрыш в 27 раз, а для fun2 в 1,5. Глядя на код, оптимизация конечно должна была быть в N_MULTIPLY раз, так результат работы кода — заполненный массив outputs_dbl значением sin(N_MULTIPLY). Но по каким-то соображениям компилятор этого не сделал.

S>Напомню, что N_MULTIPLY = 1000000. Т.е gcc тоже облажался с оптимизацией... Причем очень сильно...
Вообще-то в моём случае:
    const int N_MULTIPLY = 10000000;

То есть десять миллионов, вы уважаемый Serg27, почему-то эту константу приняли на порядок меньше.

Вот мой тестовый пример:
https://github.com/AlexGin/Math/blob/master/mainwindow.cpp

P.S. Как ускорить прохождение теста, без изменения константы, а рассказал здесь:
http://rsdn.org/forum/cpp/6723069.1

P.P.S. Считать ли данное поведение багом — это вопрос.
Посмотрим, что ответят на это разработчики из MS.
Отредактировано 12.03.2017 8:28 AlexGin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.