@ProCxx

Страница 1023 из 2477
Berkus
28.06.2017
09:53:51
А кто-то в своих проектах пользуется -fwhole-programm и -flto?
медленна, только для релизных билдов

Alik
28.06.2017
09:57:22
CMake. GCC. Вот так правильно? Вчера ночью половину документации перерыл. set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-m32 -O2 -flto -static-libstdc++" LINK_FLAGS "-m32 -fwhole-program -static-libstdc++")

Денис
28.06.2017
09:58:50
Всем привет. Надеюсь, что кто-нибудь сталкивался ? Пытаюсь сбилдить PySide2 под виндой, падает с ошибкой LLVM version 3.9 is required (llvm-config detected Process failed because: for command: llvm-config --version at Process failed because: for command: llvm-config --prefix). Поставил LLVM с офф сайта, но llvm-config все так же нету на системе. На линуксе тоже была такая проблема, но там все быстрее решилось, просто доставил еще один пакет. Перегуглил все вдоль и поперек, у многих тоже возникают вопросы, где взять этот llvm-config на винду, но вменяемых ответов не нашел. Может кто-нибудь знает?

Alik
28.06.2017
09:59:01
Путаюсь уже в понятиях флагов для компилятора и линкера

Google
Alik
28.06.2017
10:02:40
Это просто сошка для игрового сервера, там старая версия libstdc++ рядом с исполняемым файлом расположена. Фичи из новой библиотеки без этого не получится использовать, старая библиотека перекрывает новую.

Berkus
28.06.2017
10:03:03
вроде нормально, https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html

Alik
28.06.2017
10:03:49
вроде нормально, https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html
То есть на компиле давать черех -flto информацию, а -fwhole-programm уже разберётся с ней?

Денис
28.06.2017
10:04:21
это бинарник, надо чтобы он был в PATH и тогда все найдется
Проблема в его отсутствии после установки llvm

Alik
28.06.2017
10:05:13
Berkus
28.06.2017
10:09:36
http://llvm.org/builds/ ы?

Денис
28.06.2017
10:11:11
Ага

Berkus
28.06.2017
10:11:47
Google
Alik
28.06.2017
10:12:17
Antony
28.06.2017
10:12:24
Или нужно для линкера -flto вместе с -fwhole-programm?
-fwhole-program писать не надо - это устаревшая, выканутая опция компиялтора. Ей на замену пришла -lto

Berkus
28.06.2017
10:12:31
Спасибо.
-fwhole-program это другое

да, вот что Тони говорит

Alik
28.06.2017
10:12:43
-fwhole-program это другое
я читал, что можно комбинировать

Antony
28.06.2017
10:12:45
:)

не надо комбинировать

Alik
28.06.2017
10:14:38
не надо комбинировать
В документации вроде не видел, что она deprecated или вроде того

Хм

вот, что на одном сайтике прочитал "... While this option is equivalent to proper use of the static keyword for programs consisting of a single file, in combination with option-flto this flag can be used to compile many smaller scale programs since the functions and variables become local for the whole combined compilation unit, not for the single source file itself."

http://www.lahey.com/docs/lgf10help/gcc/Optimize-Options.html

Как-то инфы по этим флагам мало.

Berkus
28.06.2017
10:20:30
я запостил ссылку там было про этот режим

Alik
28.06.2017
10:20:51
Да, я прочитал.

Сейчас уже буду коммит делать на замену.

Berkus
28.06.2017
10:21:43
https://gcc.gnu.org/onlinedocs/gccint/WHOPR.html#WHOPR

вот тут еще

Alik
28.06.2017
10:23:17
Хм, есть просто загуглить fwhole-program, то эти страницы не показывает. Возьму на заметку, спасибо всем.

Antony
28.06.2017
10:23:44
Похоже что -fvisibility=hidden -lto современнее чем -fwhole-program -lto

Alik
28.06.2017
10:26:05
https://stackoverflow.com/questions/13674894/when-to-use-certain-optimizations-such-as-fwhole-program-and-fprofile-generate Было бы замечательно, если бы кто-то ответил на этот вопрос. У кого есть понимание и опыт. Вопрос не мой, но думаю будет полезно.

Google
Berkus
28.06.2017
10:28:53
оно берет IR из объектников и оптимизирует его целиком

довольно медленно но очень злобно

Alik
28.06.2017
10:31:08
оно берет IR из объектников и оптимизирует его целиком
По сути gcc на clang заменить не должно составить проблем, тоже попробую․ Спасибо.

Когда заменил -fwhole-program в линке на -flto размер вырос на ~100 КБ

Antony
28.06.2017
10:40:02
С -fvisibility-hidden ?

Alik
28.06.2017
10:40:36
Так set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-m32 -O2 -flto -static-libstdc++" LINK_FLAGS "-m32 -flto -static-libstdc++")

сейчас попробую твой вариант

~1.8 МБ

То есть тоже самое, что и с fwhole-program

set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-m32 -O2 -fvisibility=hidden -flto -static-libstdc++" LINK_FLAGS "-m32 -flto -static-libstdc++")

Alik
28.06.2017
10:42:53
Экспорты так стоят #define C_DLLEXPORT extern "C" __attribute__((externally_visible))

Похоже самый оптимальный вариант это #define C_DLLEXPORT extern "C" __attribute__ ((visibility ("default"))) и flto + fvisibility=hidden

Alexander
28.06.2017
10:54:32
@antoshkka а ты задал вопрос Антону Полухину в гугл форму??

Alik
28.06.2017
10:55:56
так он не вырежит экспорты?

Berkus
28.06.2017
10:56:10
https://github.com/berkus/cmake-setup/blob/master/setup.cmake#L89 для clang-lto у меня такие опции были

Alexander
28.06.2017
10:56:54
Та-дам

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0638r0.pdf

Google
Alik
28.06.2017
10:57:41
У меня всё по-нубски) https://github.com/In-line/metamod_unprecacher/blob/master/CMakeLists.txt

Alexander
28.06.2017
10:58:54
@antoshkka где можно обсуждать пропозал, чтобы твой голос более-менее был услышан? в Слаке?

или мб есть какой-то mailing list. У меня тут есть пропозал, который нужно режектнуть

Antony
28.06.2017
10:59:48
можно начать отсюда, а там посмотрим :)

Alexander
28.06.2017
11:00:07
можно начать отсюда, а там посмотрим :)
Ок. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0638r0.pdf

Это просто набор слов без бенчмарков. К тому же мои тесты говорят, что этот алгоритм не оч

https://github.com/EdSchouten/crochemore_perrin_searcher/blob/master/crochemore_perrin_searcher.cc

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

Antony
28.06.2017
11:08:30
я могу вечерком побенчить и дать нормальные результаты сравнения. Только вот надо их послать так, чтобы они дошли до людей
+1 но тут надо учитывать следующее: Этот поиск O(1) по памяти, а значит его можно 1) сделать constexpr 2) ?? использовать вместо std::search ?? 3) он быстрее других поисков на небольших строках надо поэкспериментировать, прикинуть его другие слабые и сильные стороны

Alexander
28.06.2017
11:08:56
Это уже моя работа, я сделаю

Admin
ERROR: S client not available

Antony
28.06.2017
11:09:49
:) Если сделаешь до 10 числа - постараемся донести результаты до комитета

Alexander
28.06.2017
11:10:34
:) Если сделаешь до 10 числа - постараемся донести результаты до комитета
что именно нужно сделать? сравнение Crochemore-Perrin vs Boyer-Moore vs Boyer-Moore-Horspool vs std::search?

Constantine
28.06.2017
11:11:36
Я просто обожаю КМП

А, там O(1) память, ого

Antony
28.06.2017
11:12:47
Alexander
28.06.2017
11:13:22
Antony
28.06.2017
11:13:29
стоит еще посмотреть на потребление памяти и на объем бинарного кода

Alexander
28.06.2017
11:13:31
Я просто обожаю КМП
ну а вот в Стандарт КМП не попал

обьем бинарно кода? серьёзно?

Google
Constantine
28.06.2017
11:14:19
ну а вот в Стандарт КМП не попал
Я скорее из общих соображений. КМП имеет дальнейшее продолжение в Ахо-Корасика

Antony
28.06.2017
11:14:34
обьем бинарно кода? серьёзно?
уж если смотреть, то по полной :)

Berkus
28.06.2017
11:15:01
Constantine
28.06.2017
11:15:11
но в Стандарте КМП не будет )
да и не нужно, у меня есть)

Хотел быстренько прочитать статью про алгоритм, но там строковые многобукав и я ниасилил

Arseny
28.06.2017
11:17:02
А бывает что-то быстрее strstr на коротких строчках?

Aragaer
28.06.2017
11:17:41
ну есть там алгоритм кнута по поиску подстрок

Constantine
28.06.2017
11:17:45
Я не знаю как она делать. Если поставить паддинг строке до align 8, можно делать поиск на 64ках

Alexander
28.06.2017
11:17:47
только тут нужно оговрить, что какая сирока является короткой, размер алфавита и так далее

Aragaer
28.06.2017
11:17:54
вроде strstr это не всегда его прямая реализация

Constantine
28.06.2017
11:18:08
По крайней мере оптимальный алгоритм вычисления длины и сравнения требует align 8

Aragaer
28.06.2017
11:18:24
вот я и говорю - реализовать алгоритм кнута будет быстрее, чем наивный

а strstr скорее всего наивный

Alexander
28.06.2017
11:18:34
КМП requires RA Iterators

Constantine
28.06.2017
11:18:47
КМП еще и O(N) доп памяти

Alexander
28.06.2017
11:18:52
не скорее всего, а наивный

Constantine
28.06.2017
11:18:54
Чсх

Страница 1023 из 2477