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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.71
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
#1

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

20.11.2011, 06:34. Просмотров 7543. Ответов 135
Метки нет (Все метки)

Не уверен в своих силах для самостоятельной оценки сабжа. Где можно найти информацию о производительности стандартных операций с++ (гуглением не справился, нашел только сравнение реализации на с++, джаве и на нескольких интерпретируемых языках)?
То есть интересует информация плана << : * как 1:15 или <= : == как 25:24... То есть, чрезвычайно интересно знать, какие операции выбирать если есть альтернатива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 06:34     Производительность операций
Посмотрите здесь:

Производительность - C++
Подскажите, где или что почитать о том, как писать БЫСТРЫЕ программы? (про разработку высоконагруженных программ). Копаюсь в интернете -...

Производительность кода - C++
Интересует сабж как таковой, и конкретно это: std::string STR = &quot;ABC&quot;; if ( strcmp(STR.c_str(), &quot;ABC&quot; ) == 0 ) или std::string STR...

Влияет ли на производительность - C++
Влияет ли на производительность определение(тоесть реализация) функций внутри класса, а также использование вложенных классов?

Производительность DLL - C++
Привет всем, у меня вопрос по производительности подключения DLL-ки по сравнению с чтением из файла. В программе использую небольшую...

Производительность многопоточности - C++
Доброго времени суток. Решил заняться многопоточностью, и натолкнулся на непонимание с производиельность Есть код в 2 потока: ...

копирование строк, производительность - C++
подскажи, как максимально быстро скопировать сроку memcpy или я написал свою функцию size_t i = 0; while (*(szReceiver + i) =...

Вопрос про многопоточность и производительность - C++
Здравствуйте! Подскажите пожалуйста ответы на следующие вопросы: 1) Правда ли,что многопоточность в программе позволяет увеличить...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.11.2011, 18:30     Производительность операций #46
Кстати, CEBEP, как ты вообще измеряешь время исполнения отдельных операторов? Ведь без точного времени исполнения непосредственно сравниваемых операторов нельзя получить коэффициенты.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
21.11.2011, 18:31     Производительность операций #47
Bers, Есть реаллок. Ну если одним куском памяти примерно одинаковая скорость будет.
C++
1
2
3
4
5
6
7
8
   auto now = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
   std::vector<int> vec(size);
   for (size_t i = 0; i < size; ++i)
   {
      vec[i] = i;
   }
   std::cout << "Vector time: " << (chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now())
            - now).count() << std::endl;
forever@pterois:~/My_pro1/cpp_pro$ ./file
Vector time: 4
Array time: 3
Pointer time: 1
Bers
Заблокирован
21.11.2011, 18:32     Производительность операций #48
Цитата Сообщение от ForEveR Посмотреть сообщение
Bers, Есть реаллок. Ну если одним куском памяти примерно одинаковая скорость будет.
но если примерно одинаковая скорость будит, значит вектор работает примерно одинакова
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.11.2011, 18:35  [ТС]     Производительность операций #49
Цитата Сообщение от taras atavin Посмотреть сообщение
од C++
x*=2;
медленнее, чем
x+=x;
а если отчебучить что-нибудь типа x = x << 1? Я к тому, что просто список что быстрее а что нет и так ясен - я расставил операции в эксперименте так, что всегда отношение или больше или близко к 1 с первого раза. Хочется знать именно отношение

Цитата Сообщение от taras atavin Посмотреть сообщение
Итераторы бывают разные.
Да, я видел в официальных источниках упоминания о том, что иногда они - просто T*, а иногда - вспомогательный класс. Дело в том, что мы практически наверняка будем компилировать всё на VisualStudio ещё очень долгое время, знание того, как поведёт себя именно она - в принципе достаточно. Да и тема такая, что для всех компиляторов её не исчерпать да и вряд ли это разумно.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.11.2011, 18:35     Производительность операций #50
Цитата Сообщение от Сыроежка Посмотреть сообщение
То есть поднятый вами вопрос и то, как вы подощли к его решению, не представляет никакого интереса для профессиональных программистов..
Этим ты показал свой непрофессионализм. Вопрос как раз актуален при ручной оптимизации, сомнителен же только подход.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.11.2011, 18:36     Производительность операций #51
Цитата Сообщение от CEBEP Посмотреть сообщение
что-нибудь типа x = x << 1
Ну что же Вы так... временная копия же создается
C
1
x <<= 1;
Bers
Заблокирован
21.11.2011, 18:37     Производительность операций #52
Цитата Сообщение от fasked Посмотреть сообщение
Некрасиво же
Просто есть два типа людей:

1. Первые, если нужно увеличить производительность, находят самые упоротые алгоритмы, и заменяют их на более быстрые.

2. Вторые, вместо индексов массивов начинают юзать указатели, а вместо i++ писать ++i


Если у первых не получается улучшить производительность, то они начинают смотреть на дата-ориентированное программирование, и в сторону таких языков, как СИ.

У вторых ничего не получается в принципе. Потому что вся эта хрень - экономия на спичках.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.11.2011, 18:38  [ТС]     Производительность операций #53
Цитата Сообщение от taras atavin Посмотреть сообщение
время исполнения отдельных операторов?
кладу в а время перед исполнением первого, исполняю первый, сразу после кладу время в b, потом выполняю второй, кладу время в c. теперь b - a = время выполнения первого, c - b = второго.
LosAngeles
Заблокирован
21.11.2011, 18:39     Производительность операций #54
Цитата Сообщение от taras atavin Посмотреть сообщение
x=a*b+a*d;
медленее, чем
x=a*(b+d);
только без оптимизации разумеется, в дебаг версии да, на то оно и дебаг, компилятор прямолинеен. С -O3 и это утверждение будет неверным разумеется, а скорее всего и с -О1
Вобщем всё что ты написал неверно
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.11.2011, 18:41  [ТС]     Производительность операций #55
Цитата Сообщение от Bers Посмотреть сообщение
экономия на спичках
первый пункт неиллюзорно сложен а книжки по математическим методам в нашей теме уже прочитаны. выдумывать своё - чуть менее чем защитить кандидатскую.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.11.2011, 18:44     Производительность операций #56
Цитата Сообщение от Paporotnik Посмотреть сообщение
и вообще странное противопоставление сложения и умножения...
Это ты странный.
C++
1
x+x
и
C++
1
x*2
- дают один результат за разное время, и выгоднее
C++
1
x+x
, чем
C++
1
x*2
. Но
C++
1
x+x+x
и
C++
1
x*3
тоже дают один результат, а выгоднее
C++
1
x*3
, чем
C++
1
x+x+x
.
Сыроежка
Заблокирован
21.11.2011, 18:47     Производительность операций #57
Цитата Сообщение от taras atavin Посмотреть сообщение
Этим ты показал свой непрофессионализм. Вопрос как раз актуален при ручной оптимизации, сомнителен же только подход.
Я вам советую сначала почитать Герба Саттера "Решение сложных задач на С++", где он как раз говорит про оптимизацию и проходится по таким "профессионалам", как вы, которые занимаются "ручной оптимизацией". Я могу вам на ушко сказать, где "ручная оптимизация" может вам пригодиться!
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.11.2011, 18:48     Производительность операций #58
Цитата Сообщение от ForEveR Посмотреть сообщение
Точно не имеющих?
Ну ка найди в бусте решение для системы 1000*1000. Так вот, это ещё малыш. Я решал 17000*17000.
Bers
Заблокирован
21.11.2011, 18:48     Производительность операций #59
Цитата Сообщение от CEBEP Посмотреть сообщение
первый пункт неиллюзорно сложен
Не нужно изобретать новые паттерны-алгоритмы.

Нужно просто поменять кусок упоротой архитектуры на другой, более быстрый.
Смотришь, какой кусок программы выполняется дольше всех. и думаешь, как его можно оптимизировать. Например, скорость теряется из-за многочисленных левых расчетов - можно на таком участке закэшировать часть данных.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2011, 18:50     Производительность операций
Еще ссылки по теме:

Производительность CPU, КЕШ, многопоточность - C++
Доброго времени суток! Суть проблемы - есть курсовой по системному программированию но я не знаю с чего и начать ( Тема:...

Константы, геттеры/сеттеры и производительность - C++
Есть глобальная константа, определяющая размер большого количества массивов. Также есть множество обращений к массивам с использованием...

Вычислить суточную производительность каждого полимера - C++
Вычислить суточную производительность каждого полимера и всей батареи из 12-ти аппаратов, если съем полимера с одного кубометра объема...

Производительность контейнеров stl для игры - C++
Есть игрушка, в которой просчитывается коллайд. В конце концов будет юзаться какая-нибудь система, типа разделения локаций на квадранты, но...

Действительно ли использование шаблонов снижает производительность программы? - C++
Просветите пожалуйста. Шаблоны в программе снижают её производительность или нет? и намного ли они больше занимают память чем обычные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.11.2011, 18:50     Производительность операций #60
Цитата Сообщение от Сыроежка Посмотреть сообщение
Однако в современных микропроцессоров есть векторные модули, которые делают операции умножения очень быстрыми, что не имеет никакого смысла заменять их серией сложений.
Серией? Или заменять удвоение одним сложением? А если выбор между
C++
1
x-a*b+a*c;
и
C++
1
x=a*(b+c);
?
Yandex
Объявления
21.11.2011, 18:50     Производительность операций
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru