|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|
Производительность операций20.11.2011, 06:34. Показов 17872. Ответов 135
Метки нет (Все метки)
Не уверен в своих силах для самостоятельной оценки сабжа. Где можно найти информацию о производительности стандартных операций с++ (гуглением не справился, нашел только сравнение реализации на с++, джаве и на нескольких интерпретируемых языках)?
То есть интересует информация плана << : * как 1:15 или <= : == как 25:24... То есть, чрезвычайно интересно знать, какие операции выбирать если есть альтернатива.
0
|
|
| 20.11.2011, 06:34 | |
|
Ответы с готовыми решениями:
135
Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 Производительность
|
|
Заблокирован
|
||
| 21.11.2011, 17:29 | ||
|
Для пользовательских типов ваши оценки не состоятельны, так как они могут разниться в сотни и даже в тысячи раз в зависимости от сложности реализации пользовательского класса. Например, создание объекта пользовательского класса может включать в чебя открытие файлов, установление связи с сервером и т.д. Что касается способа выполнения умножения, то действительно для старых микропроцессоров операции сложения регистров выполнялись значительно быстрее умножения, и компиляторы генерировали для умножения код, который использовал сложение. Однако в современных микропроцессоров есть векторные модули, которые делают операции умножения очень быстрыми, что не имеет никакого смысла заменять их серией сложений. Поэтому я и говорю, что для профессионалов ваш подход и ваши оценки не представяют инетреса. Они интересны лишь из любопытства для новичков, которые узнали, что существует разница между постинкрементом и прединкрементом и ринулиьс это сразу же проверять.
1
|
||
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
||
| 21.11.2011, 17:44 | ||
а вот в инженерном расчете кривых в авиационном деле никто умножения не избегает. так как на фоне общих затрат производительности подобная оптимизация будет столь несущественна, что никак не окупит потраченное на нее время и возможное уменьшение точности расчетов.
1
|
||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|||||||
| 21.11.2011, 17:47 [ТС] | |||||||
0
|
|||||||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 21.11.2011, 17:47 [ТС] | ||
|
0
|
||
|
Заблокирован
|
|
| 21.11.2011, 17:50 | |
|
0
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|||||||
| 21.11.2011, 17:54 [ТС] | |||||||
|
Я ожидал, что извлечение корня дольше чем умножение раз в 20 как минимум, а оказывается всего в 2,5. Это повод всё-таки переписать алгоритм.
Добавлено через 1 минуту
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.11.2011, 17:54 | |
|
CEBEP, Пишите на сях, если смотрите на крохи ускорения и хотите переписать алгоритм с индексной формы в форму указателей. А С++ не трогайте в этом случае.
1
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 21.11.2011, 18:02 [ТС] | ||
|
Короче, по сабжу кто что может сказать? Как повысить объективность теста?
0
|
||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|||
| 21.11.2011, 18:07 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.11.2011, 18:08 | |
|
CEBEP, Скорость вектора в любом случае будет ниже, чем использование указателя (если конечно грамотно использовать).
0
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|
| 21.11.2011, 18:11 [ТС] | |
|
просто ещё на первом курсе написал парсер, он использовал стеки. Когда я перешел от стеков к массивам (просто выделил память под максимально высокий стэк), получил (зависело от контекста) прирост производительности в 80 раз. Ясно же, что если бы проблема решалась только так, то технологии с++ небыли бы настолько популярными. Но полагаться на произвол оптимизатора тоже страшно. Вот и изучаю. Сейчас если доведу написание теста до конца, ещё в IDE Qt запущу тест, разницу посмотрю...
0
|
|
|
Заблокирован
|
||
| 21.11.2011, 18:11 | ||
|
0
|
||
|
Заблокирован
|
||||
| 21.11.2011, 18:16 | ||||
|
Добавлено через 4 минуты А если слегка подшаманить, можно подружить вектор с массивами на стеке. Для особо капризных случаев. Только вот.. в 99% случаев этого нафег не нужно.
0
|
||||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 21.11.2011, 18:16 [ТС] | ||
|
0
|
||
|
Заблокирован
|
||||||||||||
| 21.11.2011, 18:17 | ||||||||||||
|
Что касается операций сравнения, то на Intel процессорах они обычно выполняются с помощью одной машинной команды: CMP или ее вариации. Например,
Что касается вашего знакомого, то это сразу же говорит о том, что он - не профессионал. Его представления об эффективности крайне наивны, так как ему постоянно самому надо писать код по управлению памятью. А это означает, что он может допустить ошибки, и его код не будет столь эффективен, как уже выверенный код для контейнеров. Более того его код может быть вообще не безопасным! Я уж не говорю о сопровождении такого кода другими людьми.
1
|
||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||||||||||||
| 21.11.2011, 18:19 | ||||||||||||||||||||||||||
1
|
||||||||||||||||||||||||||
|
Заблокирован
|
|
| 21.11.2011, 18:22 | |
|
ну первое что бросается в глаза - явно надо сделать обёртки вокруг ассемблерной вставки в виде инлайн функции или макроса, иначе это читать невозможно. Исправить наконец то саму ассемблерную вставку, потому что результат rdtsc помещается в пару edx:eax на ia32, а на intel64 в младшую часть rax и старшую часть rdx, итоговый результат можно получить побитовым или
1
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 21.11.2011, 18:23 [ТС] | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 21.11.2011, 18:27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Добавлено через 2 минуты
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 21.11.2011, 18:27 | |
|
Доказать равенства, используя свойства операций над множествами и определения операций Доказать равенства, используя свойства операций над множествами и определения операций Сколько нужно провести операций, чтобы 13 операций подряд были успешными? Доказать равенства, используя свойства операций над множествами и определения операций Напечатать все знаки арифметических операций и операций отношения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|