|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|
Производительность операций20.11.2011, 06:34. Показов 17867. Ответов 135
Метки нет (Все метки)
Не уверен в своих силах для самостоятельной оценки сабжа. Где можно найти информацию о производительности стандартных операций с++ (гуглением не справился, нашел только сравнение реализации на с++, джаве и на нескольких интерпретируемых языках)?
То есть интересует информация плана << : * как 1:15 или <= : == как 25:24... То есть, чрезвычайно интересно знать, какие операции выбирать если есть альтернатива.
0
|
|
| 20.11.2011, 06:34 | |
|
Ответы с готовыми решениями:
135
Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 Производительность
|
|
114 / 114 / 13
Регистрация: 29.04.2010
Сообщений: 240
|
|
| 21.11.2011, 19:57 | |
|
Предлагаю ТСу забить на такого рода оптимизацию. Все равно в итоге выигрыш будет незначительным.
Если необходимо ускорить код, то надо переходить на чистый С. Надо считать массив из файла, где заранее кол-во элементов неизвестно? realloc в помощь. Если известно приблизительное количество элементов, можно еще ускорить процесс. Необходимо решать большие СЛАУ? Может вы просто метод не тот выбрали?
0
|
|
|
Заблокирован
|
|
| 21.11.2011, 20:09 | |
|
Извиняюсь за сумбур. Ибо я ассемблер не ведаю. И возможно просто не понимаю о чем сейчас напишу.
Мне вот интересно, а вот так можно сделать: Если допустим, операция + (причем в ассемблированном варианте, а не на языке с++) весит.. нууу пусть будит 1 условная единица. Допустим * - 2 условных единицы А разделить - 3 условных единицы, ну и тд После компиляции, просматривается кусок кода (функции, которую нужно замерить), и тупо подсчитывается, сколько условных единиц она наберёт. Ну и... зная среднее значение, которое по времени тратится на 1 условную единицу, можно уже сделать предположение сколько по времени будит выполняться данный кусок кода. Конечно, нужно как то учесть поправку на то, что разные коды могут выполняться одновременно на разных ядрышках. Но! В целом, даже не зная, сколько времени будит исполняться код, можно же замерить его "условную тяжесть". И сравнивать разные куски кода друг с другом. Ведь все равно, тот кусок, который наберёт больше условных единиц будит работать медленнее более легковесных аналогов. Как вам идея? Все что нужно - на одно-ядерном компьютере при 100% загрузке процессора (а ещё лучше не на многозадачной ОС) погонять ассемблированные команды, и определить их адекватные условные веса. Можно вообще весь ассемблер "оценить". И потом получать в условных единицах абсолютную оценку производительности функций, алгоритмов и тп
0
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 22.11.2011, 01:45 [ТС] | ||
|
0
|
||
| 22.11.2011, 02:40 | |
|
Не по теме: Пишите на ассемблере, вот где для оптимизаций непочатый край. А Си и С++ оставьте для продакшн кода :angry:
1
|
|
|
Заблокирован
|
||
| 22.11.2011, 04:56 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
| 22.11.2011, 05:23 | ||||||
0
|
||||||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|||
| 22.11.2011, 05:33 [ТС] | |||
|
Добавлено через 5 минут
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||
| 22.11.2011, 05:35 | ||||||||||||
1
|
||||||||||||
|
Заблокирован
|
|
| 22.11.2011, 05:37 | |
|
taras atavin, с какими скобками? Если такими a*(b+c) то нет, не меньше. Кончай уже фантазировать, тему всё-таки дети читают, а то вдруг и правда кто-то поверит в твои спичечные оптимизации. Всё что ты писал до этого, ниодна твоя оптимизация не существует в природе!
0
|
|
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|
| 22.11.2011, 05:45 [ТС] | |
|
LosAngeles, вы голословны. покажите всё-таки, как убедится в ваших словах
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 22.11.2011, 05:48 | ||
|
0
|
||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 22.11.2011, 05:51 [ТС] | ||
|
И вообще, часто это звучит так:
я: Мужики, мне надо оптимизировать код. мне: Да ты дебил, его бесполезно оптимизировать! я: Да вот же, посмотри, есть разница мне: Вы профан! Нету! Добавлено через 2 минуты
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 22.11.2011, 06:02 | |||
|
Добавлено через 9 минут
0
|
|||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
||
| 22.11.2011, 06:12 [ТС] | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 22.11.2011, 06:46 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Что касается индекса и указателя. Просто [CPP]a[100] ганатированно не медленее, чем
Добавлено через 3 минуты Добавлено через 16 секунд Добавлено через 8 минут Кстати, меньшим числом опреаций можно было бы обойтись при использовании системы с большим основанием, например, сложение тех же 32-х битных операндов, но при спользовании шестнадцатеричных операций использует вместо 64-х оперций с цифрами только 16. Вопрос в том, как реализовать быстрое шестнадцатеричное сложение. Таблицей сложенгия? Она будет содержать 256 байт и требовать отдельного вычисления адреса, правда с помощью логической операции, которая может исполняться быстрее арифметической. Ещё меньше операий с цифрами при основании 256, но такая таблица весит 65536 слов, зато операций с цифрами будет всего 8. Добавлено через 11 минут Зависимости от числа разрядов не будет в единственном случае - если процессор реализует операции малой разрядности через аналог разрядности в регистр с занулением старших разрядов. Тогда нет разница 16 разрядов занулять, или 24, в любом случае будет затрачено одно и то же время, но тогда минимальноле время расходуется при сложении операндов разрядности регистр, так как эта опреция не требует зануления старших разрядов, то есть выполняется без вспомогательной предварительной операции. Но и в этом случае операции повышенной разрядности, для которых в процссоре нет готовых аппаратных реализаций, реализуются инлайновой функцией на асме и расходуют больше времени. Кстати, ты обратил внимание, что я не упомянул разрядности вроде 22-х, или 34-х бит?
1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|||
| 22.11.2011, 06:47 [ТС] | |||
|
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||||||||||||||||||||||
| 22.11.2011, 07:20 | ||||||||||||||||||||||||||||||||||||||||||
|
Добавлено через 5 минут Добавлено через 33 секунды Добавлено через 1 минуту Добавлено через 7 минут
Добавлено через 6 минут А должно быть:
0
|
||||||||||||||||||||||||||||||||||||||||||
|
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
|
|
| 22.11.2011, 07:23 [ТС] | |
|
0010 * 0110 = 1100. Даже не представляю, как это происходит, но фором можно записать такое используя &, + и <<
0
|
|
|
Заблокирован
|
||
| 22.11.2011, 08:28 | ||
|
Я вам говорю - любой код пишите, хоть на с++, хоть на си, хоть на бейсике. Замер производительности все равно делается уже ассемблированного кода ПОСЛЕ компиляции. Дальше тупо суммируется вес ассемблированного кода. И если есть две функции, написанные на языке высокого уровня, но делающие одно и тоже. То быстрее будит работать та, которая на данном компьютере, при компиляции одним и тем же компилятором, с одними и теми же настройками даст более легкий вес ассемблированного кода. Я конечно, не разбираюсь в ассемблере, но по моему это очивидно, не? Глупо пытаться оценивать вес высокоуровнего кода, потому что не известно точно, во что его превратит компилятор. А вот оценка уже ассемблированного кода даст абсолютный вес. И эти абсолютные веса уже можно смело сравнивать. Получается, что алгоритм замеров таков: 1. Пишутся две функции на языке высокого уровня, которые нужно сравнить по производительности. 2. Компилируются. 3. Откомпилированный код скармливается специальной утилитке, которая знает все веса ассемблированных команд. 4. Утилитка возвращает абсолютный вес этого кода. 5. Сравниваются веса. Если получится, что допустим вес одной функции 2, а другой - 1,5, значит первая работает быстрее второй в 2.0/1,5 раза. 6. Профит!
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||
| 22.11.2011, 08:32 | ||||||||||||
0
|
||||||||||||
| 22.11.2011, 08:32 | |
|
Доказать равенства, используя свойства операций над множествами и определения операций Доказать равенства, используя свойства операций над множествами и определения операций Сколько нужно провести операций, чтобы 13 операций подряд были успешными? Доказать равенства, используя свойства операций над множествами и определения операций Напечатать все знаки арифметических операций и операций отношения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
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 и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|