@ProCxx

Страница 2157 из 2477
Igor
26.06.2018
08:27:00
#offtop а каков юзкейс вот этого чуда http://www.standards.ru/doc.aspx?catalogid=iso&classid=-1&search=14882 , при том что "на языке оригинала" оригинал свободно лежит в интернетах?

Никита
26.06.2018
08:28:50
Стандарт же не в свободном доступе, он продается. В свободном доступе последний драфт

Igor
26.06.2018
08:30:42
https://www.iso.org/standard/68564.html гм, и впрямь окай, мне почему-то казалось, что я видел отдельные версии стандартов в свободном доступе..

Google
Stanislav
26.06.2018
08:37:03
https://www.iso.org/standard/68564.html гм, и впрямь окай, мне почему-то казалось, что я видел отдельные версии стандартов в свободном доступе..
спешл фор ю Q: Why are the C++ working materials freely available on GitHub when the standard must be purchased from ISO or another standards organization? ISO holds the copyright for all balloted and published versions of the C++ International Standard (IS) and related C++ Technical Specifications (TSes). The GitHub repo contains the incremental in-progress working source snapshots as they are edited, which may frequently be in an inconsistent in-progress state as edits are applied, and which does not contain the final source for any published standards.

Igor
26.06.2018
08:38:15
майти сенкс, уже и сам наткнулся)

Antony
26.06.2018
08:50:31
Antony
26.06.2018
08:52:51
@antoshkka можешь ли скинуть слайды с презентации по copy elision?
На основном сайте событий Яндекса есть слайды и видюшки https://events.yandex.ru/events/cpp-party/15-jun-2018/ но только в pdf

Стенограмма обсуждения второго доклада выложена вот тут https://stdcpp.ru/proposals/e6263404-2b60-49af-87c6-bd9bc1801257

Alexey
26.06.2018
09:59:07
А какое ускорение компиляции дают precompiled headers при первой сборке проекта где не используется шаблонной магии особо? Какой порядок выигрыша во времени? 10%? В разы? В 10 раз?

Alexey
26.06.2018
10:01:17
Ну, даже если буста нет, и header only либами не баловаться?

Ilia
26.06.2018
10:01:44
А какое ускорение компиляции дают precompiled headers при первой сборке проекта где не используется шаблонной магии особо? Какой порядок выигрыша во времени? 10%? В разы? В 10 раз?
PCH (прекомпайлед хедерс) хранит в скомпилированном виде ту базу, на которой стоит приложение или библиотека, базовый фреймворк, API чего-то и так далее. Чем эта база шире, тем будет выгоднее использовать PCH

Aleksandr
26.06.2018
10:01:50
конкретно у меня в проекте 100к строк без учёта инклудов выигрыш был примерно в 2 раза

Google
Alexey
26.06.2018
10:03:33
Хм. Попробовал cotire на проекте - ускорение в 10 процентов.

Ilia
26.06.2018
10:03:51
Это я не знаю что такое

Alexey
26.06.2018
10:04:11
Ну, понятно, что это cmake с кучей подпроектов.

https://github.com/sakra/cotire

Ilia
26.06.2018
10:06:02
Anatoly
26.06.2018
10:06:28
@I_vlxy_I следует сказать, что выигрыш будет, если проект имеет специально для PCH заголовка структуру. вот так нельзя взять простой проект, который не использовал PCH и получить выигрыш

Anatoly
26.06.2018
10:06:55
CMake и сам умеет PCH вроде...
проверяй информацию

А в чем особенность?
например, если я в одной единице трансляции использую map, а в другой set, то я вынужден собрать все используемые заголовочные файлы стандартной библиотеки и поместить в один заголовок типа std.h и сделать его первым include в каждой единице трансляции

Ilia
26.06.2018
10:08:36
А в чем особенность?
Надо правильно собрать все заголовки, которые не изменяются в проекте, в PCH.

Alexey
26.06.2018
10:09:17
Это и для gcc так?

Anatoly
26.06.2018
10:09:46
Это и для gcc так?
посмотри доку по cotire: set_target_properties(MyExecutable PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "stdafx.h") cotire(MyExecutable)

вот здесь ты указываешь какой файл будет PCH

для gcc не скажу, но для msvc точно это должен быть первый include

Alexey
26.06.2018
10:11:51
Хм. Но ведь из этого вытекает, что в итоге в проекте все будут инклюдить всё, даже если это все и не нужно. По файлу исходников теперь и не скажешь что ему нужно - инклюд то один.

Anatoly
26.06.2018
10:12:20
@I_vlxy_I следует сказать, что выигрыш будет, если проект имеет специально для PCH заголовка структуру. вот так нельзя взять простой проект, который не использовал PCH и получить выигрыш

Ilia
26.06.2018
10:12:24
Это и для gcc так?
Общий принцип организации заголовков такой же, в PCH дожны идти все неизменяемые, внешние заголовки из библиотек и API. Про первый инклуд -- не знаю в GCC может быть и так.

Alexander
26.06.2018
10:14:00
подозреваю, что тоже должен быть первым

Alexey
26.06.2018
10:14:02
Общий принцип организации заголовков такой же, в PCH дожны идти все неизменяемые, внешние заголовки из библиотек и API. Про первый инклуд -- не знаю в GCC может быть и так.
А внутренние нельзя? Если проект (наверно в терминах студии это солюшн) большой и состоит из сотен подпроектов

Google
Aleksandr
26.06.2018
10:14:09
Хм. Но ведь из этого вытекает, что в итоге в проекте все будут инклюдить всё, даже если это все и не нужно. По файлу исходников теперь и не скажешь что ему нужно - инклюд то один.
первым можно инклудить pch.h например, потом уже те инклуды, которые нужны конкретному файлу. а в pch.h все инклуды допустим в блоке #ifdef USE_PCH ...

Alexander
26.06.2018
10:14:15
иначе может же логика инклуда поменяться, если перед ним что-то есть

Alexey
26.06.2018
10:14:32
cotire на каждый target делает свой pch, что, кажется, не очень здорово

Anatoly
26.06.2018
10:14:48
cotire на каждый target делает свой pch, что, кажется, не очень здорово
нормально, ведь он делает это избирательно, зависит от числа единиц трансляции

Ilia
26.06.2018
10:14:53
Хм. Но ведь из этого вытекает, что в итоге в проекте все будут инклюдить всё, даже если это все и не нужно. По файлу исходников теперь и не скажешь что ему нужно - инклюд то один.
Вот гляди, в PCH идёт WinAPI, Direct X и Boost. Те модули, которые ты используешь из каждой части. Меньше ты не разбиваешь. И весь твой проект это использует и включает. А внутри исходных модулей ты говоришь, что "я использую всё, что стандартно в моём проекте, плюс ещё .... "

Alexey
26.06.2018
10:15:44
нормально, ведь он делает это избирательно, зависит от числа единиц трансляции
Дык на каждый из 400 проектов в итоге генерится по .gch файлу размером в 90 мегабайт. Это при компиляции.

Admin
ERROR: S client not available

Alexey
26.06.2018
10:16:00
Есть подозрение, что это может замедлять сборку

Anatoly
26.06.2018
10:16:39
Есть подозрение, что это может замедлять сборку
померяй, но еще раз повторю, без реструктуризации проекта/ов не обойдется

Alexey
26.06.2018
10:17:28
Нет смысла. Если они будут меняться -- тебе всё пересобирать...
Ну вот прямо сейчас я замеряю время первой сборки. Времена пересборки пока не смотрю.

померяй, но еще раз повторю, без реструктуризации проекта/ов не обойдется
Я правильно понял, что достаточно структуру инклюдов переделать будет?

Anatoly
26.06.2018
10:18:15
+ прикрутить котир и указать ему, куда ты поместил все стандартные и библиотечные файлы

Vhäldemar
26.06.2018
10:18:47
Есть подозрение, что это может замедлять сборку
подозрения - плохо, нужно утверждения но 400*90 палюбому что-то не так

Alexey
26.06.2018
10:19:20
Можно ли иметь несколько наборов pch? Типа pch1.h, pch2.h? И использовать либо один либо другой либо и то и другое сразу?

Alexey
26.06.2018
10:20:28
подозрения - плохо, нужно утверждения но 400*90 палюбому что-то не так
Ну, в msvs, если включить в cotire опцию unity, то оно с pch начинает собираться на 25 процентов медленнее чем без.

Google
Vhäldemar
26.06.2018
10:20:52
но там же под каждый бинарь собирается, так?

Alexey
26.06.2018
10:21:09
в одном проекте нет
Что такое проект в данном контексте? Может просто единица компиляции?

Vhäldemar
26.06.2018
10:21:12
солюшен - набор проектов, кажлый собирает какой-то бинарь

Vhäldemar
26.06.2018
10:21:54
у меня сомнения, что один pch можно сделать юзаемым в нескольких таргетах

какой в этом смысл?

Alexey
26.06.2018
10:22:36
какой в этом смысл?
Чтобы не генерить 100500 одинаковых pch

Anatoly
26.06.2018
10:23:09
Чтобы не генерить 100500 одинаковых pch
есть request: https://github.com/sakra/cotire/issues/72

Vhäldemar
26.06.2018
10:23:09
ну сгенери один и его заинклудь

Alexey
26.06.2018
10:23:51
Да, буду пробовать.

Vhäldemar
26.06.2018
10:24:06
или купить памяти/ссд

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