Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
rdb_devAlekseySQL, так ты же опять на винде по ntfs елозишь! Сделай уже нормальный тест - создай на СХД раздел с FAT32 и цепляй его по iSCSI для обоих тестов. Ты издеваешься? Да он опцию компилятора найти не в состоянии, а ты напрягаешь его айСказзи настраивать =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 21:28 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
azsxавторКакой ресурс вы порекомендуете для изучения подобных оптимизаций? Хотя вопрос явно не ко мне, отмечу. Я компилирую "linux" не потому, что мне жизненно необходима оптимизация под процессор, а потому, что комп домашний, время было -- настроил. Для дома самое то и видео теперь есть. Производительность очень интересная вещь. Если бы мне поручили вояджер куда то отправить или на форексе робота воткнуть -- я бы о полной компиляции ядра подумал. Но в обычных случаях лучше юзать уже кем то скомпилированными, а то вы так и linux from scratch читать начнёте, благо, что на русском есть :) В вашем случае я согласен с предыдущими ответами, начните с изучения опций компилятора, затем всякие няшки, например, профилирование. Например, вы толком опций не нашли, а ведь intel тем и плох (хорош), что у него немеряно всяких технологий внутри камня. Я то оптимизации по воспроизведению видео добился именно тем, что скомпилировал vlc именно под свой проц, а не под "общий" скачал бинарник. Затем, если понравится почитать Столярова про ассемблер и искать мануалы на нерусском. зы ну да, производительность считать в десятых долях секунд (и ваще в секундах) -- это что то из области java. Спасибо, наконец вернулся в свой родной Linux и дошли руки до оптимизации gcc. В pro- файл добавил: QMAKE_CXXFLAGS += -march=native -mtune=native , что ограничивает набор инструкций возможностями текущего процессора и делает оптимизационную настройку кода на текущий процессор. Также пробовал оба варианта, добавляя только один из двух ключей. https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/x86-Options.html#x86-Options В консоли сборки видно, что эти флаги действительно передаются компилятору. Но прироста производительности не замечено. Думаю, что остальные опции не принесут серьезных изменений производительности, поэтому тестировать их не стал. Может, конечно, у меня программа не особо сложная, но так или иначе результата не обнаружено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 22:39 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
Dima TAlekseySQLДля себя я уже сделал вывод. Всем спасибо. Звучит как "Спасибо что бесплатно на меня поработали". Выводом делись или сделаем выводы. Вот он: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1284501&msg=21174163 Если хочется подробнее почему я не вижу смысла в использовании fat32: 1. В топике приведено время чтения данных ~20 секунд. fat32 быстрее ntfs максимум на 5%, так что в лучшем случае выигрыш составит примерно 1 секунду. А вопрос идет в падении производительности на ~50 секунд. Другими словами это фактор второго порядка малости. Это если не учитывать частичной асинхронность чтения, а если учитывать, то все еще будет незначительнее... 2. Почему мы должны сравнивать работу на ФС, которая нативна для Виндовс и ненативна для Линакс? Не лучше ли сравнить работу на типовых ФС для каждой платформы? 3. Почему я должен заниматься анализом причин низкой производительности Виндовс? Думаю эти товарищи могут нанять специалистов, которые выполнят им подобные работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 22:49 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
авторПочему я должен заниматься анализом причин низкой производительности Виндовс? Забыли добавить: "для неизвестного алгоритма, который знаете только Вы". Как итог специалисты по windows ничего оптимизировать не будут, так как ничего не понятно. Также, возможно более логично сравнивать linux в консоли хотя бы с core серверной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 07:17 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
Вряд ли это понадобится ТС, поэтому очень образно. Вывожу флаги своего процессора: авторcat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm epb pti retpoline tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts Каждый флаг -- это чаще всего какая то технология внутри камня. Она может работает на другой частоте, может имеет какие то особенности. Например, fpu -- по сути математический сопроцессор. Если Ваша программа активно работает с вещественными числами -- то выключения данного флага при компиляции может увеличить число тактов выполнения программы (будет дольше выполняться). Есть некоторый "стандартные настройки" и некоторые флаги включены всегда для стандартно выкладываемых бинарников. Есть некоторые не включаемые. Как бы основа -- чтобы бинарник запустился везде. Например, при компиляции vlc под свой процессор я включил какие то флаги, важные для производительности. А в Вашем коде оптимизации на уровне флагов видимо нет. Рискну погадать, что к флагам надо относиться как к черному ящику или читать Столярова для начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 07:56 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
azsxВряд ли это понадобится ТС, поэтому очень образно. Вывожу флаги своего процессора: авторcat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm epb pti retpoline tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts Каждый флаг -- это чаще всего какая то технология внутри камня. Она может работает на другой частоте, может имеет какие то особенности. Например, fpu -- по сути математический сопроцессор. Если Ваша программа активно работает с вещественными числами -- то выключения данного флага при компиляции может увеличить число тактов выполнения программы (будет дольше выполняться). Есть некоторый "стандартные настройки" и некоторые флаги включены всегда для стандартно выкладываемых бинарников. Есть некоторые не включаемые. Как бы основа -- чтобы бинарник запустился везде. Например, при компиляции vlc под свой процессор я включил какие то флаги, важные для производительности. А в Вашем коде оптимизации на уровне флагов видимо нет. Рискну погадать, что к флагам надо относиться как к черному ящику или читать Столярова для начала. Насколько я понял опция Код: plaintext включает все возможные для текущего камня инструкции. Цитата из приведенной ранее ссылки (с переводом от Google): marchGenerate instructions for the machine type cpu-type. In contrast to -mtune=cpu-type, which merely tunes the generated code for the specified cpu-type, -march=cpu-type allows GCC to generate code that may not run at all on processors other than the one indicated. Specifying -march=cpu-type implies -mtune=cpu-type. nativeThis selects the CPU to generate code for at compilation time by determining the processor type of the compiling machine. Using -march=native enables all instruction subsets supported by the local machine (hence the result might not run on different machines). Using -mtune=native produces code optimized for the local machine under the constraints of the selected instruction set. https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/x86-Options.html#x86-Options Если в приведенной мне ссылке спуститься ниже, то для моего типа процессора в опции -march написано: haswellIntel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction set support. Не думаю, что авторы мануала в опции начали бы описывать наборы инструкций, которые этой опцией не включаются. Так что по логике я включил все возможные наборы команд, даже те, что не поддерживаются другими процессорами. Если я не прав и запутался в выборе ключей, то буду рад подсказке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 09:52 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
авторЕсли в приведенной мне ссылке спуститься ниже, то для моего типа процессора в опции -march написано: Может более правильно "Если в приведенной мне ссылке спуститься ниже, то для моей архитектуры (haswell) процессора в опции -march написано:" --- По сути Вы разобрались :) Теперь вы понимаете почему натив при компиляции Вам ничего не дал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 10:48 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСпасибо, наконец вернулся в свой родной Linux и дошли руки до оптимизации gcc. В pro- файл добавил: QMAKE_CXXFLAGS += -march=native -mtune=nativeДобавь -Ofast ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 13:52 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
azsxавторЕсли в приведенной мне ссылке спуститься ниже, то для моего типа процессора в опции -march написано: Может более правильно "Если в приведенной мне ссылке спуститься ниже, то для моей архитектуры (haswell) процессора в опции -march написано:" --- По сути Вы разобрались :) Теперь вы понимаете почему натив при компиляции Вам ничего не дал? Я не очень понимаю эти загадки. Если вам есть что сказать по теме, то буду рад услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2018, 19:08 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
AlekseySQL но я вам ответил :) Вам надо посмотреть флаги своего процессора, а не вашей архитектуры. Почитать о них. Моё мнение -- о всех, хотя бы общее определение. Вам надо посмотреть закрытый код вашей программы. Подумать, есть ли там какие то критические для производительности участки, которые используют специализированные инструкции именно под ваш процессор. Никто не ответит за вас, кода нет. Мне кажется, что после того как вы сделаете то, о чём я писал ранее, Вы легко сможете ответить на вопрос почему именно Ваш код скомпилированный в натив не дал прироста. То есть моё мнение отличается от большинства, сперва почитайте о инструкциях своего процессора, а уже потом читайте опции компилятора. Ну или, как я писал, ассемблер, начиная со Столярова, машинные кода, подсчёт тактов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2018, 02:53 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
azsx, У Вас какое-то странное мнение. Сначала обычно определяют задачу, которую хотят решить, потом разбираются со средствами. Автору бы определится какой конкретно участок ЕГО кода тормозит, а потом уже ставить диагноз и искать решения. Но диагноз поставлен уже заранее: windows suxx, linux rules. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2018, 10:28 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
авторСначала обычно определяют задачу, которую хотят решить, потом разбираются со средствами. авторТеперь вы понимаете почему натив при компиляции Вам ничего не дал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2018, 11:39 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevazsx, У Вас какое-то странное мнение. Сначала обычно определяют задачу, которую хотят решить, потом разбираются со средствами. Автору бы определится какой конкретно участок ЕГО кода тормозит, а потом уже ставить диагноз и искать решения. Но диагноз поставлен уже заранее: windows suxx, linux rules. IMHO Сейчас я как раз этот вопрос решаю: профайлер показывает большую долю выполнения библиотечного кода, который распространяется в виде уже собранных бинарников (а значит никакие оптимизации на него не действуют). Поэтому сейчас изучаю вопрос оптимизации работы библиотек. Диагноз заранее поставлен не был: после падения производительности компилятора Intel на Windows- платформе я потратил еще целые сутки, чтобы проверить поведения компилятора Clang. Если у вас есть возможность провести подобные эксперименты для какой- либо своей программы, то я буду очень рад, если вы это выполните и в этой теме поделитесь полученными результатами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2018, 12:56 |
|
||
|
Производительность кода разных компиляторов под разными платформами
|
|||
|---|---|---|---|
|
#18+
Так раскройте нам наконец секрет КАКОЙ код и КАКИЕ библиотечные ф-ции у Вас "тормозят". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2018, 13:15 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39599352&tid=2017976]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 470ms |

| 0 / 0 |
