108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445

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

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

Студворк — интернет-сервис помощи студентам
Не уверен в своих силах для самостоятельной оценки сабжа. Где можно найти информацию о производительности стандартных операций с++ (гуглением не справился, нашел только сравнение реализации на с++, джаве и на нескольких интерпретируемых языках)?
То есть интересует информация плана << : * как 1:15 или <= : == как 25:24... То есть, чрезвычайно интересно знать, какие операции выбирать если есть альтернатива.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2011, 06:34
Ответы с готовыми решениями:

Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100
Вычисления проводятся слева-направо, ни одна операция не имеет приоритета. Добавлено через 2 минуты задача вынесла моск, прошу помочь

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

Заменить в данной строке знаки арифметических операций названиями противоположных им операций
Заменить в данной строке знаки арифметических операций названиями противоположных им операций.

135
Заблокирован
22.11.2011, 10:38
Студворк — интернет-сервис помощи студентам
да собственно вот она, ну так чё там насчёт Производительность операций есть вопросы?
Миниатюры
Производительность операций  
0
Заблокирован
22.11.2011, 10:40
Цитата Сообщение от taras atavin Посмотреть сообщение
И где ж такая кнопка?
В студии
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.11.2011, 10:43
Цитата Сообщение от taras atavin Посмотреть сообщение
Хороший компилятор оптимизирует x++ до ++x? Эйси. Но всегда ли гарантируется такая оптимизация? ТС продемонстрировал, что это не так.
Я извиняюсь, но ТС к началу разговора не знал про уровни оптимизации компилятора.

По поводу ассемблерных команд: можно будет посчитать по количеству памяти и по количеству требуемых тактов процессора. Что в принципе может дать какую-то оценку. Опять же отметить стоит, что все это также абстрактно, скорость выполнения будет зависит от количества ядер, от приоритетов процесса, от количества кэша и от совершенства алгоритма предсказаний ветвления, от наличия/отсутствия каких-либо инструкций на целевой архетиктуре и так до бесконечности.

Цитата Сообщение от taras atavin Посмотреть сообщение
Что то я не вижу здесь эквивалентности.
А как и чем ты компилируешь-то вообще? Не допускаешь такой мысли, что твой компилятор - лох?
0
Заблокирован
22.11.2011, 10:49
Цитата Сообщение от fasked Посмотреть сообщение
Я извиняюсь, но ТС к началу разговора не знал про уровни оптимизации компилятора.
хаха! ну значит пора его познакомить с ними!

Тарас, там в студии ещё есть сверху выпадающий список, а в нём пункт Release, хотя вроде ты тусовался в разделе линукса, тебе наверно gcc -O3 и objdump -d роднее будут? Вернись в привычную среду, может тогда и перестанут мерещиться всякие недооптимизации
0
Заблокирован
22.11.2011, 10:50
Цитата Сообщение от fasked Посмотреть сообщение
Опять же отметить стоит, что все это также абстрактно, скорость выполнения будет зависит от количества ядер, от приоритетов процесса, от количества кэша и от совершенства алгоритма предсказаний ветвления, от наличия/отсутствия каких-либо инструкций на целевой архетиктуре и так до бесконечности.
Смысл не в том, что бы сказать сколько секунд будит выполняться кусок кода. А в том, что можно точно сказать, что на данной машине данный кусок кода будит работать быстрее, или медленнее другого куска кода в конкретное количество раз.

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

Умные люди оптимизируют алгоритмы. Глупые - высокоуровневый код.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.11.2011, 11:04
Цитата Сообщение от Bers Посмотреть сообщение
Смысл не в том, что бы сказать сколько секунд будит выполнятся кусок кода. А в том, что можно точно сказать, что на данной машине данный кусок кода будит работать быстрее, или медленнее другого куска кода в конкретное количество раз.
Ну Вы же понимаете, что данная тема будет интересна ну ма-а-а-ксимум как исследовательская работа студента или запись в блоге? Это же несерьезно. Так, прочитать и забыть.
Цитата Сообщение от Bers Посмотреть сообщение
Естественно, следует понимать, что скорость работы кода, и скорость работы алгоритма - это две большие разницы. И они никак не зависят друг от друга.
Так и надо в первую же очередь отталкиваться от асимптотической сложности алгоритма. А уже потом бегать профайлером, который скорее всего (опять же) покажет на операции ввода/вывода, то есть чтения/записи на диск, терминал и т.д.

Ну а в знаниях нашего гордого и даже немного дерзкого визави меня заставляют сомневаться другие его выступления. О чем вообще, то есть о каких оптимизациях может идти речь, когда человек не знает, что такое двоичный поиск. И мне смешно читать сообщения о том, как правильно и грамотно надо программировать, от человека, который не знает и не может понять, что такое итератор в C++ и как паттерн вообще.

В общем тема неинтересна чуть более, чем полностью, а спорить с настолько непробиваемыми людьми даже неинтересно.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.11.2011, 11:12
Цитата Сообщение от fasked Посмотреть сообщение
И мне смешно читать сообщения о том, как правильно и грамотно надо программировать, от человека, который не знает и не может понять, что такое итератор в C++ и как паттерн вообще. В общем тема неинтересна чуть более, чем полностью, а спорить с настолько непробиваемыми людьми даже неинтересно.
А с чего ты взял, что с двоичным поиском не знаком кто то ещё, кроме тебя?
0
Заблокирован
22.11.2011, 11:13
fasked, так то да. И вроде бы мозгами все понимаю, а все равно, нет-нет, а лезут в голову крамольные мысли, типа:
C++
1
2
3
struct A{   A(){ std:: cout<< "TEST\n";}  };
 
struct B: public A{    B():A() {}  }
Догадается компилятор сразу вызвать метод потомка, или будит оверхед операции?
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.11.2011, 11:18
Цитата Сообщение от taras atavin Посмотреть сообщение
А с чего ты взял, что с двоичным поиском не знаком кто то ещё, кроме тебя?
Мы ведь уже как-то общались на эту тему - начинать можно отсюда Двоичный поиск
0
Заблокирован
22.11.2011, 11:19
ну или вот так:

Класс А реализует методы.

Класс Б отнаследовался от класса А, и имеет точно такие же прототипы, как у класса А.
Причем реализация методов Б - это тупо вызвать внутри себя методы А:

C++
1
2
3
4
5
6
7
8
9
class A
{
    void View() { std::cout << "Test\n"; }
};
 
class B: protected A
{
   void View() { A::View(); }
};

Будит оверхед?
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.11.2011, 11:20
Цитата Сообщение от Bers Посмотреть сообщение
а лезут в голову крамольные мысли, типа:
Догадается компилятор сразу вызвать метод потомка, или будит оверхед операции?
В любом случае, не стоит оно того. Если сейчас не догадывается, то в будущем догадается. А лишний геморрой себе зарабатывать ни к чему. Я за читабельность и поддерживаемость кода в любом случае.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.11.2011, 11:23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
template <class Type> Type *search(Type *Array, int Count, Type Target)
{
 Type *L;
 Type *R;
 Type *B;
 L=Array;
 R=Array+Count-1;
 while (L!=R)
 {
  Count=R-L;
  B=L+Count/2;
  if (*B==Target)
  {
   return B;
  }
  if (*B>Target)
  {
   R=B;
  }
  else
  {
   L=B;
  }
 }
 return NULL;
}
0
Заблокирован
22.11.2011, 11:23
Цитата Сообщение от fasked Посмотреть сообщение
В любом случае, не стоит оно того. Если сейчас не догадывается, то в будущем догадается. А лишний геморрой себе зарабатывать ни к чему. Я за читабельность и поддерживаемость кода в любом случае.
Ну лично я рассуждаю так: Я готов принести в жертву скорость работы (тем боле, что потери будут незначительными) ради лучшей читабельности, сопровождаемости, и главное - безопасности.

Но! При всём при этом, я хочу знать, будит ли оверхед, или нет.

Не важно, буду ли я пытаться когда нибудь оптимизировать сам код (архитектурное решение классов и тп), или не буду. Но знать такие вещи я должен.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.11.2011, 11:28
Цитата Сообщение от fasked Посмотреть сообщение
Мы ведь уже как-то общались на эту тему - начинать можно отсюда
Теперь прошу объяснить, почему мой шаблон search плох. А он очень плох, совсем не годен.

Добавлено через 2 минуты
Цитата Сообщение от Bers Посмотреть сообщение
(тем боле, что потери будут незначительными
Ну если так, то ещё хорошо. Мне пришлось пожертвовать читабельностью ради того, чтоб прога могла быть выполнена в обозримое время.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
22.11.2011, 11:29
Цитата Сообщение от taras atavin Посмотреть сообщение
B=L+Count/2;
Кажется вот здесь лучше сделать битовый сдвиг
Цитата Сообщение от taras atavin Посмотреть сообщение
while ((L!=R)
А здесь кажется еще и синтаксическая ошибка

И вообще к чему это? Если Вы пытаетесь мне доказать, что знаете, как реализовывается бинарный поиск, то не утруждайтесь. Мнение о Вас уже давно сформировано и его сложно изменить теперь. В той теме (на которую я дал линк) Вы тоже так рьяно, практически с пеной у рта, отстаивали свое мнение. Почему я теперь должен быть уверенным в том, что Вы понимаете о чем говорите?
0
Заблокирован
22.11.2011, 11:31
Цитата Сообщение от fasked Посмотреть сообщение
Кажется вот здесь лучше сделать битовый сдвиг
Там вообще просится закэшировать константой Count/2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2011, 11:31

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. Дальше как не пробовал, не могу привести к...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. A\subseteq C, B\subseteq D \Rightarrow A\times...

Сколько нужно провести операций, чтобы 13 операций подряд были успешными?
Вероятность успешной операции = 63% Сколько нужно провести операций, чтобы 13 операций подряд были успешными???

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. б) Ax(B\C)=(AxB)\(AxC). Почему график не...

Напечатать все знаки арифметических операций и операций отношения
Напечатать все знаки арифметических операций и операций отношения,которые входят в заданый массив и все знаки арифметических операций и...


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

Или воспользуйтесь поиском по форуму:
136
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru