Сообщение Re[6]: Очередной "шедевр" от MS от 12.03.2017 8:10
Изменено 12.03.2017 8:28 AlexGin
Re[6]: Очередной "шедевр" от MS
Здравствуйте, Serg27, Вы писали:
S>Здравствуйте, AlexGin, Вы писали:
AG>>Здравствуйте, Erop, Вы писали:
E>>>Истинный виновник тут, конечно, тот, кто столь сложным заполняет массив константой, известной на момент компиляции...
AG>>Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу
S>Егор абсолютно прав. Посмотрите внимательно. Там где "Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу" проблем нет (это в коде ТС). В моем коде оставлено только два варианта с одинаковым результатом вычислений, причем результат мог быть вычислен во время компиляции. цитата:
S>
Вообще-то в моём случае:
То есть десять миллионов, вы уважаемый Serg27, почему-то эту константу приняли на порядок меньше.
Вот мой тестовый пример:
https://github.com/AlexGin/Math/blob/master/mainwindow.cpp
S>Здравствуйте, AlexGin, Вы писали:
AG>>Здравствуйте, Erop, Вы писали:
E>>>Истинный виновник тут, конечно, тот, кто столь сложным заполняет массив константой, известной на момент компиляции...

AG>>Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу
S>Егор абсолютно прав. Посмотрите внимательно. Там где "Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу" проблем нет (это в коде ТС). В моем коде оставлено только два варианта с одинаковым результатом вычислений, причем результат мог быть вычислен во время компиляции. цитата:
S>
S>Напомню, что N_MULTIPLY = 1000000. Т.е gcc тоже облажался с оптимизацией... Причем очень сильно...S>Т.е. оптимизация для fun1 дала выигрыш в 27 раз, а для fun2 в 1,5. Глядя на код, оптимизация конечно должна была быть в N_MULTIPLY раз, так результат работы кода — заполненный массив outputs_dbl значением sin(N_MULTIPLY). Но по каким-то соображениям компилятор этого не сделал.
Вообще-то в моём случае:
const int N_MULTIPLY = 10000000;
То есть десять миллионов, вы уважаемый Serg27, почему-то эту константу приняли на порядок меньше.
Вот мой тестовый пример:
https://github.com/AlexGin/Math/blob/master/mainwindow.cpp
Re[6]: Очередной "шедевр" от MS
Здравствуйте, Serg27, Вы писали:
S>Здравствуйте, AlexGin, Вы писали:
AG>>Здравствуйте, Erop, Вы писали:
E>>>Истинный виновник тут, конечно, тот, кто столь сложным заполняет массив константой, известной на момент компиляции...
AG>>Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу
S>Егор абсолютно прав. Посмотрите внимательно. Там где "Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу" проблем нет (это в ТС). В моем коде оставлено только два варианта с одинаковым результатом вычислений, причем результат мог быть вычислен во время компиляции. цитата:
S>
Вообще-то в моём случае:
То есть десять миллионов, вы уважаемый Serg27, почему-то эту константу приняли на порядок меньше.
Вот мой тестовый пример:
https://github.com/AlexGin/Math/blob/master/mainwindow.cpp
P.S. Как ускорить прохождение теста, без изменения константы, а рассказал здесь:
http://rsdn.org/forum/cpp/6723069.1
P.P.S. Считать ли данное поведение багом — это вопрос.
Посмотрим, что ответят на это разработчики из MS.
S>Здравствуйте, AlexGin, Вы писали:
AG>>Здравствуйте, Erop, Вы писали:
E>>>Истинный виновник тут, конечно, тот, кто столь сложным заполняет массив константой, известной на момент компиляции...

AG>>Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу
S>Егор абсолютно прав. Посмотрите внимательно. Там где "Массив заполняется случайными значениями, перемноженными на индекс прохода по циклу" проблем нет (это в ТС). В моем коде оставлено только два варианта с одинаковым результатом вычислений, причем результат мог быть вычислен во время компиляции. цитата:
S>
S>Напомню, что N_MULTIPLY = 1000000. Т.е gcc тоже облажался с оптимизацией... Причем очень сильно...S>Т.е. оптимизация для fun1 дала выигрыш в 27 раз, а для fun2 в 1,5. Глядя на код, оптимизация конечно должна была быть в N_MULTIPLY раз, так результат работы кода — заполненный массив outputs_dbl значением sin(N_MULTIPLY). Но по каким-то соображениям компилятор этого не сделал.
Вообще-то в моём случае:
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.