powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Производительность кода разных компиляторов под разными платформами
25 сообщений из 40, страница 1 из 2
Производительность кода разных компиляторов под разными платформами
    #39597158
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал простенькую программу (построчное чтение больших текстовых файлов, разбиение строки на составные части, преобразование текстовых значений в нужные форматы и их складирование в массив с последующим очищением массива).

В ОС Debian сборка выполнялась в Qt Creator, а в ОС Windows- в Visual Studio 2017 (для третьего варианта также был выполнен замер времени выполнения программы собранной в Qt Creator- результаты практически те же). В ОС Windows предварительно полностью выключался антивирус.

Программа при переносе между платформами НИКАК не модифицировалась, осуществлялась только перекомпиляция исходного кода. Отдельно делались замеры на скорость чтения строк из файлов (при этом код содержащий обработку полученных строк комментировалась).

Чтение строк из файлов / полное время выполнения программы (приведены средние значения):
Код: plaintext
1.
2.
3.
1. Debian 9.2.3, Qt Creator, gcc 7.2.0-19, ext4:  22,7 сек / 65 сек 
2. Debian 9.2.3, Qt Creator, Intel C/C++, ext4:  22,7 сек / 64 сек 
3. Win 10 Pro 1709, Visual Studio / Qt Creator, MSVS 2017, ntfs:  21,8 / 103 сек 
4. Win 10 Pro 1709, Visual Studio, Intel C/C++, ntfs:  26,1 / 86 сек 

Вывод команды time (у меня 4-ех ядерный процессор i5-4690, поэтому запускались 4 потока):
Код: plaintext
1.
2.
real: 67,5
user:259
sys:  4

Почему под разными платформами для компилятора Intel C/C++ мы получаем настолько разные значения? Ведь если из полного времени выполнения вычесть время чтения данных (таким образом получив чистое время работы процессора), то получим отличие в 1,5 раза(!!!). По логике программный код должен исполняться напрямую без участия ОС (кроме кода ядра, разумеется), тогда не понятно почему один и тот же код, скомпилированный одним и тем же компилятором выполняется в 1,5 раза дольше.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597161
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать, что в обоих случаях использовались Release- сборки. В Qt Creator использовались настройки оптимизации по- умолчанию для Release- сборки, а в Visual Studio- O2 максимальная скорость кода.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597186
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

выбирай:
так проц распределился между процессами

так выпали звёзды

в Dos пробовал?
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597205
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще ключи для использования различных наборов команд проца.
Например MSVC по умолчанию использует только MMX2 от PentiumIII, а более современные не использует.
Например в твоем i5-4690 есть поддержка SSE4.1, SSE4.2, AVX2. Попробуй разрешить компилятору их использовать.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597239
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)AlekseySQL,

выбирай:
так проц распределился между процессами

так выпали звёзды

в Dos пробовал?


Не думаю, что превосходство Debian сразу по двум компиляторам является следствием расположения звезд. Меня подмывает поставить Visual Studio 2015, чтобы проверить для компилятора Clang.

У меня интерфейс построен на Qt, поэтому не думаю, что Dos позволит выполнить замеры.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597240
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

конечно, ещё ГУИ добавь
ну смешно же, кого оно беспокоит эти *2 *3 в десктопе?
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597247
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос к знатокам Linux: если я соберу ядро на своей машине приведет ли это к ускорению работы моей программы? Ведь возможно при сборке из исходников система как- либо анализирует аппаратную часть и использует те или иные куски кода для повышения производительности или такого нет и я все выдумал?

Кстати, я правильно понимаю, что оптимизации ядра повлияют только на значение sys команды time (что в моем случае составляет очень маленькую долю выполнения программы)?
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597253
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсть еще ключи для использования различных наборов команд проца.
Например MSVC по умолчанию использует только MMX2 от PentiumIII, а более современные не использует.
Например в твоем i5-4690 есть поддержка SSE4.1, SSE4.2, AVX2. Попробуй разрешить компилятору их использовать.

Гугл сообщает , что подобные оптимизации интересовали пользователей только до 2013 версии. В настройках компилятора в Visual Studio я подобных настроек не нашел (в том числе перечитывая список "Все параметры"). Скорее всего эти наборы команд включены по умолчанию и никаких дополнительных действий программистам совершать не нужно.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597258
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLDima TЕсть еще ключи для использования различных наборов команд проца.
Например MSVC по умолчанию использует только MMX2 от PentiumIII, а более современные не использует.
Например в твоем i5-4690 есть поддержка SSE4.1, SSE4.2, AVX2. Попробуй разрешить компилятору их использовать.

Гугл сообщает , что подобные оптимизации интересовали пользователей только до 2013 версии. В настройках компилятора в Visual Studio я подобных настроек не нашел (в том числе перечитывая список "Все параметры"). Скорее всего эти наборы команд включены по умолчанию и никаких дополнительных действий программистам совершать не нужно.
В MSVC2015 есть ключ /arch и по дефолту SSE2
https://msdn.microsoft.com/en-us/library/7t5yh4fd.aspx /arch:SSE2

Enables the use of SSE2 instructions. This is the default instruction on x86 platforms if no /arch option is specified.
Как в 2017 не знаю, у меня ее нет.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597268
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLDima TЕсть еще ключи для использования различных наборов команд проца.
Например MSVC по умолчанию использует только MMX2 от PentiumIII, а более современные не использует.
Например в твоем i5-4690 есть поддержка SSE4.1, SSE4.2, AVX2. Попробуй разрешить компилятору их использовать.

Гугл сообщает , что подобные оптимизации интересовали пользователей только до 2013 версии. В настройках компилятора в Visual Studio я подобных настроек не нашел (в том числе перечитывая список "Все параметры"). Скорее всего эти наборы команд включены по умолчанию и никаких дополнительных действий программистам совершать не нужно.
1.Гуглом еще надо уметь пользоваться. Гугли /arch

2.Вычеркнуто

3.Без опций компиляции результат ничего не показывает. Часто проблема в них. Нужна полная командная строка.

4.Разная скорость может объясняться реализацией библиотек на разных платформах. И компилятор будет ни при чем.

5.Забываешь про malloc - он тоже дергает сисколл'ы

6.Конечно,собранное ядро именно под твой процессор, будет быстрее :troll:
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597293
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что существуют специальные программы для профилирования кода (например Intel VTune) автору похоже даже не догадывается. Всем участникам форума предлагается погадать на кофейной гущи и написать, что же они там увидели. А у меня даже кофе нет (((, только чай.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597332
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсть еще ключи для использования различных наборов команд проца.
Например MSVC по умолчанию использует только MMX2 от PentiumIII, а более современные не использует.
Например в твоем i5-4690 есть поддержка SSE4.1, SSE4.2, AVX2. Попробуй разрешить компилятору их использовать.

Нашел где в настройках указывается использование расширенных наборов инструкций. Но, к сожалению, замеры показали, что никакого преимущества над дефолтными настройками нет (а кое- где даже небольшие просадки). Microsoft реализовал поддержку только sse2, а у компилятора intel также есть возможность выбора инструкций sse3. Дополнительно я пробовал выбрать набор команд AVX2- нет прироста производительности.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597337
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторесли я соберу ядро на своей машине приведет ли это к ускорению работы моей программы?
Тут вопроса 2.
1. Вы выкините всё лишнее из ядра и оставите только нужное вам в консоли. Сборка на основе, например, debian.
2. Вы мало того, что всё выкините, но ещё и перекомпиируете под свой проц "native". Вывод -- ваш выбор gentoo.
---
У меня была иная задача, просмотр fhd на слабом пк. Даже установка calculate linux вместо: debian, ubuntu, win 7 64, значительно оживило ПК. Скомпилированный vlc под мой процессор (то есть с опциями для gcc компилятора) стал показывать fhd. Наверное, ядро перекомпилировал бы -- ваще взлетел бы. Но зато пол светового дня -- я компилирую обновления для системы :)
зы
я не знаток.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597338
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLПочему под разными платформами для компилятора Intel C/C++ мы получаем настолько разные значения? Ведь если из полного времени выполнения вычесть время чтения данных (таким образом получив чистое время работы процессора), то получим отличие в 1,5 раза(!!!). По логике программный код должен исполняться напрямую без участия ОС (кроме кода ядра, разумеется), тогда не понятно почему один и тот же код, скомпилированный одним и тем же компилятором выполняется в 1,5 раза дольше.Эксперимент не чистый. Для начала, надо использовать один и тот же набор команд процессора. Например, на GCC можно задать -march="native" или -march="core2" для совместимости с предыдущим поколением процессоров (как задать на MSVC - не знаю). В качестве ФС попробуй в обоих вариантах FAT32.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597349
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevТо, что существуют специальные программы для профилирования кода (например Intel VTune) автору похоже даже не догадывается. Всем участникам форума предлагается погадать на кофейной гущи и написать, что же они там увидели. А у меня даже кофе нет (((, только чай.

Спасибо, сейчас буду профилировщиком пользоваться.

Но мне не понятно в принципе: почему один и тот же код, скомпилированный одним и тем же компилятором выполняется сильно разное время (причем системное время очень мало)? Ведь у нас С++, который должен работать напрямую на железе, а не С# или Java с их дополнительными программными прокладками. Может я чего-то недопонимаю?
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597357
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

как бы всё что на ПК работает, по определению работает на железе(кремнии?)...
другое дело, что всеми ресурсами ПК монопольно владеет ОС, и как она их распределяет зависит от её реализации
так же очень много зависит, как уже сказали, от качества системных либ
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597369
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
azsxавторесли я соберу ядро на своей машине приведет ли это к ускорению работы моей программы?
Тут вопроса 2.
1. Вы выкините всё лишнее из ядра и оставите только нужное вам в консоли. Сборка на основе, например, debian.
2. Вы мало того, что всё выкините, но ещё и перекомпиируете под свой проц "native". Вывод -- ваш выбор gentoo.
---
У меня была иная задача, просмотр fhd на слабом пк. Даже установка calculate linux вместо: debian, ubuntu, win 7 64, значительно оживило ПК. Скомпилированный vlc под мой процессор (то есть с опциями для gcc компилятора) стал показывать fhd. Наверное, ядро перекомпилировал бы -- ваще взлетел бы. Но зато пол светового дня -- я компилирую обновления для системы :)
зы
я не знаток.

Какой ресурс вы порекомендуете для изучения подобных оптимизаций?
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597473
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКакой ресурс вы порекомендуете для изучения подобных оптимизаций?
Хотя вопрос явно не ко мне, отмечу. Я компилирую "linux" не потому, что мне жизненно необходима оптимизация под процессор, а потому, что комп домашний, время было -- настроил. Для дома самое то и видео теперь есть.
Производительность очень интересная вещь. Если бы мне поручили вояджер куда то отправить или на форексе робота воткнуть -- я бы о полной компиляции ядра подумал. Но в обычных случаях лучше юзать уже кем то скомпилированными, а то вы так и linux from scratch читать начнёте, благо, что на русском есть :)
В вашем случае я согласен с предыдущими ответами, начните с изучения опций компилятора, затем всякие няшки, например, профилирование. Например, вы толком опций не нашли, а ведь intel тем и плох (хорош), что у него немеряно всяких технологий внутри камня. Я то оптимизации по воспроизведению видео добился именно тем, что скомпилировал vlc именно под свой проц, а не под "общий" скачал бинарник.
Затем, если понравится почитать Столярова про ассемблер и искать мануалы на нерусском.
зы
ну да, производительность считать в десятых долях секунд (и ваще в секундах) -- это что то из области java.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39597932
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLКакой ресурс вы порекомендуете для изучения подобных оптимизаций?JОсобых вариантов нет - http://gcc.gnu.org/
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598399
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал замеры производительности для компилятора Clang на обоих платформах (приведено среднее время выполнения всей программы):
1. Debian 9.2.3, Qt Creator, Clang, ext4: 65,3 сек
2. Win 10 Pro 1709, Visual Studio 2015, Clang, ntfs: 97 сек

Как видим ситуация аналогичная компилятору от Intel: сильная просадка производительности на платформе Windows. Так что это не "особенность" компилятора от Intel, а общая закономерность.

Подумал, что причиной подобной просадки могут быть конкурирующие процессы, поэтому поднял приоритет потокам. К сожалению, это не принесло никаких улучшений. Расширенные наборы инструкций также никак не изменили ситуацию.

Профайлер Intel Vtune Amplifier показал (Elapsed Time / CPU Time):
1. Debian 9.2.3, Qt Creator, Clang, ext4: 66,2 / 250,6
2. Win 10 Pro 1709, Visual Studio 2015, Clang, ntfs: 113,6 / 397
3. Debian 9.2.3, Qt Creator, Intel C/C++, ext4: 66,5 / 250,9
4. Win 10 Pro 1709, Visual Studio 2015, Intel C/C++, ntfs: 94 / 302

У меня 4-ех ядерный процессор, поэтому я запускаю 4 потока. Видно, что под Debian происходит асинхронное чтение данных с диска, поскольку
Elapsed Time ~ CPU Time / 4

, а платформа Windows этим похвастаться не может. Хотя, просадка производительности больше, чем эта разница, так что скорее всего библиотеки у Windows- решения также проигрывают в производительности. Компилятор от корпорации зла оказался самым неудачным решением из 4 рассмотренных во время тестирования.

Самое смешное, что я много раз слышал обратные утверждения: "gcc глючный, а Microsoft далеко впереди"... Думаю это был еще один пример недобросовестной рекламы от тех, кто очень боится наступления Linux- систем.

Отпишусь, по изменению производительности когда задам опции для gcc. Может получится еще немного ускориться.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598498
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL, так ты же опять на винде по ntfs елозишь!
Сделай уже нормальный тест - создай на СХД раздел с FAT32 и цепляй его по iSCSI для обоих тестов.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598560
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devAlekseySQL, так ты же опять на винде по ntfs елозишь!
Сделай уже нормальный тест - создай на СХД раздел с FAT32 и цепляй его по iSCSI для обоих тестов.

Я уже давно не видел использование fat32. Я проделал эксперимент для типовых конфигураций, используемых на каждой платформе. Поэтому мой эксперимент отражает реальность, а не синтетические циферки.

К тому же я в свое дело ставил эксперимент (и тут приводил его результаты):
Как же приятно себя цитировать!Оказалось, что ничего этого не нужно: система работает через буферы, которые и берут на себя задачу непрерывной подачи данных.

Я сделал замеры когда на моем SSD были ФС ext4 и ntfs. В последнем случае сильно упала скорость чтения файла, но общая скорость работы программы практически сохранилась (привожу средние значения):
Чтение ext4: 22,5 сек
Чтение ntfs: 38 сек
Чтение + Выполнение ext4: 65 сек
Чтение + Выполнение ntfs: 66,5 сек

По результатам видно, что падение скорости выполнения всей программы значительно меньше, чем падение скорости чисто файлового чтения. Так что отбой: умные дяденьки этот вопрос уже обдумали и дали нам готовое решение.
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1283738&msg=21162931

Будет fat32, ext4 или ntfs- результаты будут практически такие же (разумеется под Линаксом, который умеет асинхронно подтягивать данные с дисков).
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598578
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL, есть разница померить что-то в разных условиях и сделать вывод:
1. "Получилось вот что, объясните почему."
2. "Я думаю что так получилось потому что ...."

Ты идешь по п.1.

п.1 отличается от 2 тем что там спрашивающий просит не доказательства, а направления куда копать. Т.е. доказывать тут тебе никто не будет, не заслужил, но если пойдешь по п.2 то подскажут кучу направлений в которых покопать.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598579
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TAlekseySQL, есть разница померить что-то в разных условиях и сделать вывод:
1. "Получилось вот что, объясните почему."
2. "Я думаю что так получилось потому что ...."

Ты идешь по п.1.

п.1 отличается от 2 тем что там спрашивающий просит не доказательства, а направления куда копать. Т.е. доказывать тут тебе никто не будет, не заслужил, но если пойдешь по п.2 то подскажут кучу направлений в которых покопать.

Для себя я уже сделал вывод. Всем спасибо.
...
Рейтинг: 0 / 0
Производительность кода разных компиляторов под разными платформами
    #39598581
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLДля себя я уже сделал вывод. Всем спасибо.
Звучит как "Спасибо что бесплатно на меня поработали". Выводом делись или сделаем выводы.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Производительность кода разных компиляторов под разными платформами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]