Блог*
Open in Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Show more1 981
Subscribers
-424 hours
-97 days
+530 days
Posts Archive
1 981
#gamedev
Хот тейк: подавляющее большинство разработчиков игр не умеют нормально дизайнить высокие уровни сложности
1 981
Одна из вещей, которая меня удивила вскоре после прилёта в Армению — в магазинах газировки продают в том числе и в бутылках даже не по треть, а по четверть литра. Я их частое видел в заведениях общепита. Интересно, кто ещё такое покупает
1 981
Если вашу (или чью-то ещё) задницу сравнивают с персиком — помните, что у персика на кожице волоски
1 981
#prog #cpp #article
Fun with flat_map’s non-explicit constructors
TL;DR: в коде ниже вызываются три разных конструктора
flat_map:
void print_map(std::flat_map<int, int>);
print_map({ {1, 2, 3}, {10, 20, 30} });
print_map({ {1, 2}, {10, 20} });
print_map({ {1}, {10} });
print_map({ {}, {} })1 981
#prog #моё #article
В этот раз я написал слишком крупный для телеги пост — тут он занял бы семь постов. Поэтому держите ссылку на cold storage репозиторий для подобных текстов Блог*а:
Почему свойства (property) в языках программирования — это плохая идея
1 981
Repost from commit -m "better"
#llvmweekly
https://c3.handmade.network/blog/p/8852-how_bad_is_llvm_really
TL;DR - медленно, семантика промежуточного представления (над которым производятся оптимизации) заточены на С/С++, и сделать иначе - невозможно. Ну, например, деление на 0 в LLVM - UB, а какой-то "другой" язык хочет уметь это обрабатывать. В итоге, LLVM навязывает некоторую семантику любому языку, которые хочет его использовать. Например, бесконечный цикл в rust, который некорретно оптимизировался llvm - https://github.com/rust-lang/rust/issues/28728
Зато много готовых оптимизаций из коробки.
Так же автор (очень справедливо!) вопрошает, какого хрена в коде LLVM не используются арены и пулы, везде, налево, и направо, потому что основные причины тормозов LLVM - это деревянные структуры без data locality.
У автора замена аллокатора для LLVM на mimalloc дает хороший буст в скорости (+10%).
Я систематически бенчил clang с разными аллокаторами, и остановился на tcmalloc от Google, по скорости тот же mim, но в пике жрет прямо существенно меньше памяти.
Неутешительный вывод такой - начинать разработку компилятора стоит с LLVM, а вот дальше есть варианты.
1 981
#prog #cpp #article
An informal comparison of the three major implementations of std::string
(GCC, MSVC и clang)
Все три варианта поддерживают SSO, но по разному этого достигают.
(thanks @itpgchannel)
