group-telegram.com/experimentalchill/274
Last Update:
__is_bitwise_cloneable
https://discourse.llvm.org/t/extension-for-creating-objects-via-memcpy/76961
Команда протобуфа решает интересную проблему: протобуфы хоть и похожи на обычные структуры, но они со временем разрослись, и вообще они виртуальные классы для того, чтобы можно было с ними удобно работать. И у пользователей есть ожидание, что они почти похожи на примитивные структуры. Иногда кто-то напишет свой формат и скажет, что он быстрее протобуфов, потому что проще!
Когда мы копируем какой-то протобуф, то часто можно скопировать просто все биты примитивных полей, что является простой задачей для memcpy. Но проблема, memcpy вызывает undefined behavior на таких классах из-за виртуальности, и нетривиальной копируемости, и проблем с лайфтаймами. В C++23 аж добавили https://en.cppreference.com/w/cpp/memory/start_lifetime_as , так как даже ужасный std::launder не решил никаких тонкостей.
В итоге решили сделать специальный built-in, чтобы детектить такие кейсы, когда memcpy не будет проблемой для виртуальных классов.
В общем, в LLVM уехало 2 недели назад, протобуф патч подцепил (скоро уедет в прод) и ускорения парсинга на любых сколько-нибудь реальных протобуфах - минимум 8%. Ещё раз показывает сильную связку инфраструктуры компиляторов, которые мы обновляем каждые пару недель. Сделали оптимизацию в другом уровне -- сразу уезжает в прод и экономим CapEx как можем (на самом деле тратим больше на AI, но это story for another day).
Если получится, советую обновить и clang и протобуфы, если ими пользуетесь. Возможно мы приблизимся, чтобы они вели себя как структурки со временем, и это очень сильный шаг.
BY Experimental chill
![](https://photo.group-telegram.com/u/cdn4.cdn-telegram.org/file/QqnmtW0x7qY4Xydpw8FXxq6pmdjAMuwi_MRpkQsMMzGhr-N1I39bsrpV1W_0zpE0VP-kS886KQFrm8NnZAJH3sJr334Vei0HArAtCSN7XjzEQKD3mpoi-pyEoT4Yot_G2YTb8bQwD-nmgCQdy49kcAReJ-3CRkI2OapF5hcZMYElNiAbM38qKz5Cp-9654F_HqO-t-kcjWfDjZ2MGovxvP1iAyJnncutDLK_vGjxAQer8Zjt7qTjtig_uJtI09HF0GUdc-XmYPgnC8DOtTmfJICQb5fQuZgCnBP1HOJFt3G-_hUfwBcJ570N6jM2ozNM4-1-JWc86K3RyBF0zwbBBQ.jpg)
Share with your friend now:
group-telegram.com/experimentalchill/274