
Berkus
28.06.2017
09:53:51

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

Berkus
28.06.2017
10:00:32


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

Денис
28.06.2017
10:04:21

Evgeniy
28.06.2017
10:04:31

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

Berkus
28.06.2017
10:12:31
да, вот что Тони говорит

Alik
28.06.2017
10:12:43

Antony
28.06.2017
10:12:45
:)
не надо комбинировать

Alik
28.06.2017
10:14:38
Хм
вот, что на одном сайтике прочитал
"... 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
Когда заменил -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 а ты задал вопрос Антону Полухину в гугл форму??

Berkus
28.06.2017
10:55:31

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
Это просто набор слов без бенчмарков. К тому же мои тесты говорят, что этот алгоритм не оч
https://github.com/EdSchouten/crochemore_perrin_searcher/blob/master/crochemore_perrin_searcher.cc
я могу вечерком побенчить и дать нормальные результаты сравнения. Только вот надо их послать так, чтобы они дошли до людей

Antony
28.06.2017
11:08:30

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

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

Alexander
28.06.2017
11:14:43

Berkus
28.06.2017
11:15:01

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

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

Alexander
28.06.2017
11:17:13

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 это не всегда его прямая реализация

Alexander
28.06.2017
11:17:56

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
Чсх