Побывал на 2-х дневном семинаре Александреску и первом дне конференции (пропустил только "Generic and Generative Programming in C++ — Andrei Alexandrescu"). Видеозаписи на семинаре не было. На конференции видеозапись была, но посмотреть могут только участники.
Семинар Александреску был похож на его выступление на C++ and Beyond 2012. Также он много рассказывал про низкоуровневые оптимизации. По большому счету, название семинара не очень соответствовало его содержанию. Почти все примеры были взяты из Folly (Folly is an open-source C++ library developed and used at Facebook.). FB написан на PHP, поэтому сейчас приходится очень жестко оптимизировать все, что можно. Некоторые озвученные факты про FB:
* каждый пользователь "потребляет" ~200 мили Ватт
* если пользователь не видит рекламу в течении 0,2 сек — это убыток
* у них миллионы строк С++ кода, примерно 50 строк ассемблерных вставок
* используют gcc и clang, любые версии — главное быстрый код
* изначально оптимизировали С++ код под gcc, но это часто дает не лучший результат с clang.
* COW оптимизация для строк дает им экономию в мегабаксы, и это одна из причин почему они не используют std::string
* у Александреску самая крутая почта: aa at fb.com (это было сказано в контексте задачи сортировки строк, его адрес почти всегда первый)
* используют специализированный менеджер памяти — jemalloc. Считают, что он лучший.
Некоторые советы про измерение производительности:
* не меряйте дебажную сборку
* всегда меряйте, никогда не доверяйте интуиции о быстродействии кода и узких местах
* тщательно выбирайте baseline для сравнения
* если у вас много результатов измерений — за эталон берите только лучшее время, любой шум только ухудшает результат.
* сила "правильного" С++ в разделении структур данных и алгоритмов: при обнаружении узкого места легко оптимизировать
Из высших С++ материй упоминал про "variadic variadic templates template". Без слайдов я уже даже не скажу что это за монстр.
Доклады Майерса и Джосатиса были посвящены новым мутным местам С++. Упрощенно:
Майерс: мы (С++ комитет) хотели упростить язык и придумали новую фичу, но потом оказалось, что есть куча нюансов. Теперь вы должны знать не "Rule of three", а "Rule of five", отличия правила вывода типов для шаблонов, auto, decltype, и т.д. Покупайте мою новую книжку, там все написано.
Джосатис: Если вы не довольны С++ — это ваша вина, надо было приехать на встречу комитета и убедить всех сделать "правильно".
Джосатис рассказал историю появления noexcept.
Рассказали о пользе variable templates.
Здравствуйте, monah_tuk, Вы писали:
_>Здравствуйте, Skorodum, Вы писали:
S>>З,Ы, Александреску знает выражение: "Разработчик, укушенный Александреску" Лично спрашивал
_>А как эта фраза на английском будет? Что бы смысл передался
Я спрашивал дословно: "developer who was bitten by Alexandrescu".
В английском не очень силен, не уверен насколько точно смысл передался, но вроде поняли и посмеялись.
Мне во время конференции письмо пришло: "Вам, как участнику конференции доступно видео". Сделал ошибочный вывод: раз не участник, значит видео недоступно.
Здравствуйте, Skorodum, Вы писали:
S>Семинар Александреску...
Как обычно Александреску хуже всех. За 10 лет он так и не научился давать нормальные презентации. Тривиальные вещи часами разжовывает: со скуки умиреть можно.
И Джосатис там тоже затисался. Сам-же признал не так давно, что к С++ он имеет посредственное отношение, а теперь обучает всех С++14.
Nicolai: Sorry, but my projects usually don’t use C++ these days. Again I have to admit that my major knowledge of C++11 is based on what I learned and tried out while writing the second edition.
Мне до сих пор нравится только Скотт Майерс. И то только по тому, что он не старается строить из себя эксперта.
Здравствуйте, uncommon, Вы писали:
U>Здравствуйте, Skorodum, Вы писали:
S>>Семинар Александреску...
U>Как обычно Александреску хуже всех. За 10 лет он так и не научился давать нормальные презентации. Тривиальные вещи часами разжовывает: со скуки умиреть можно.
На семенаре было немного поживее, он там активно аудиторию спрашивал. Ну и не все такие умные, кому-то и азы разжовывать нужно.
Мне как раз больше всех понравился Александреску, видно что он один из них всех C++ использует.
Здравствуйте, Skorodum, Вы писали:
S>Вроде Саттер утверждал что инкремент/декремт atmomic стоит один такт, как для обычного целого, а он стоит 3-4.
на уровне микроархитектуры у отдельной операции вообще нет строго опредлеённого числа тактов. там же 19-стадийный конвейер плюс ООО с буфером на пару сотен команд. есть только задержки и заполнение функциональных усройств командами. задержка даже для обычного целого будет явно больше 4, а заполнение — две слитые микрооперации для обычного целого
Здравствуйте, Skorodum, Вы писали:
AK>>А что за промах? S>Вроде Саттер утверждал что инкремент/декремт atmomic стоит один такт, как для обычного целого, а он стоит 3-4.
На самом деле, он стоит 10-100 тактов. В зависимости от состояния кэшей.
Скорее всего, он имел в виду, что атомарные операции логически неотличимы от операций в один такт.