Форум программистов, компьютерный форум CyberForum.ru

Падение производительности на gcc - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Файловый и консольный ввод и вывод http://www.cyberforum.ru/cpp-beginners/thread454794.html
нужно написать программы одна чтобы вводила функцию консольно, а другая файлово
C++ Работа с allocator (управление памятью) Нормальной инфы на русском языке я так и не нашел в инете( про него читал в книге Программирование принципы и практика С++ Страуструп, но там так и реализацию функции для своего аллокатора , только дали интерфейс класс ), понял что есть 4 основные функции temlpate<class T> class allocator { // ... T* allocate(int n); void deallocate(T* p, int n); void construct(T *p,... http://www.cyberforum.ru/cpp-beginners/thread454785.html
Исчезает всё нарисованное на gdi+ C++
Доброго времени суток! Пишу подобие своего gui на gdi+.. Всё бы хорошо, но через некоторое время (около минуты), исчезает всё нарисованное.. и никакой Invalidate не помогает(( Что же делать?? Может где-то я не освобождаю ресурсы?? другого объяснения найти не могу( После каждого движения мышкой проверяю положения курсора, и если он попал в кнопку, то отрисовываю картинку с помощью...
Заполнение списка с возможностью перестановки его строк C++
Как написать программу которая string загоняет в список, чтоб потом можно было переставлять строки и.т.п?
C++ Класс с динамическим массивом http://www.cyberforum.ru/cpp-beginners/thread454744.html
доброго времени суток! помогите мне немножко: создать клас vector для сохранения массиву, розмеры от 10 до 10к, память виделите динамчно. забаспечте индексацыю елементов.
C++ Найти объединение и симметрическая разность Пожалуйста, помогите написать программу, находящую объединение и симметрическую разность элементов двух множеств подробнее

Показать сообщение отдельно
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
01.03.2012, 16:58  [ТС]     Падение производительности на gcc
Цитата Сообщение от grizlik78 Посмотреть сообщение
А это видно из машинного кода или по времени выполнения?
Я погорячился, априори заявив, что студия делает инлайн. Сейчас посмотрел дизассемблерный код и увидел, что нет инлайна ни в одном ни в другом случае. В тестовой функции считается выражение на основе операторов, возможно, студия не может делать инлайн операторов, хз.
Я доработал код, скачал последнюю версию gcc и провел еще одно тестирование.
Получились интересные, как мне кажется, результаты.
Студия:
1. Реализация в хидере: 27.6 сек
2. Реализация в cpp: 27.7 сек
gcc:
1. Реализация в хидере: 16.5 сек
2. Реализация в срр: 51.6 сек
3. Реализация в хидере, но объявление отдельно 16.7

Тестирующующий участок во всех случаях один и тот же:
C++
1
2
3
4
5
6
7
8
9
    dComplex C(1,2), C1(2,4), C2(-1,-1), D(10,0);
    int tm = clock();
    for (int i = 0; i < 1000000000; ++i)
    {
        C1.Re = i & 15;     // меняем входной аргумент, чтоб компилер не пропускал цикл
        C = C1 * C2 + (C2 - C1) * C1;
    }
    tm = clock() - tm;
    printf("time: %f\n",tm * 0.001);
Я, не веря своим глазам, раз за разом гонял на gcc, но результат один и тот же:
gcc очень хорошо оптимизирует реализацию в хидере, и очень плохо в срр!
Студия же - стабильный середнячок в обоих случаях.
 
Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru