Comments 16
Моя основная мысль не в QString — его я привёл как пример — а в том, есть ли КРУПНЫЙ выигрыш от написания, а потом таскания за собой толстого велосипеда. Жизнь слишком коротка для такой "экономии на спичках" путём выпиливания их вручную из цельного массива сосны :)
P.S. Весь Qt, кстати, тащить не надо — ЕМНИП, хватает Core, в котором при этом много и других полезных штук. Ужасы же copy-on-write, как по мне, сильно преувеличены. Основные статьи идеологов борьбы с COW относятся к нулевым, причём рассматривают не самые жизненные ситуации. На многоядерных процессорах COW, несомненно, даёт проигрыш при частых операциях, касающихся необходимости соблюдения atomic — но я совсем не уверен, что этот проигрыш нынче так велик, каким он выглядел в том десятилетии. Вопрос интересный, хотелось бы провести парочку синтетических тестов.
Надо понимать, что ЛОЛ ОЧЕНЬ большая игра. Чуть ли не самая (если не самая) массовая сетевая игра. И если получится сэкономить 1 спичку на серверном коде, то спасается не сосна, а целый лес. Это на серверной части вместо 1000 серверов для 1 000 000 игр, используется 900. Много? Вполне.
Были бенчмарки, результат следующий: чем больше ядер, тем хуже для коровы.
Я за последние годы привык, что мой комп всегда не в топе для игр. Особенно для воксельных — в них часто приходится просчитывать огромное количество блоков. Поскольку я люблю игры в жанре строительство\песочница\выживание, я перебрал некоторое количество интересных вариантов на эту тематику. И недавно я нашёл алмаз — не в плане геймплея, а в плане оптимизации. Игра с хорошей графикой и огромным миром — летает. А всё потому, что писали на сишечке и экономили на спичках)
std::string не обладает intrusive_ptr
std::string может быть перегружен лишней работой с памятью
std::string не поддерживает свой аллокатор
Свой класс строк может быть не совсем тем, что понимается в std::string. И вполне возможно, что не применим нигде, кроме этого движка.
Riot Games: анатомия технического долга