не получится, потому что любая попытка стереть тип у строк упирается в несовместимость моделей представления данных, а не в отсутствие абстракции. Если возвращать условныйchar32_t то придется декодировать UTF-8/UTF-16/UTF-32, которые тоже разные. Получается что type erasure превращается в полноценный transcoding layer и очередной тринадцатый станадарт и несет огромные накладные расходы, значит это уже не совсем укладывается стринг вьюху, т.е. пока это не будет сделано на уровне языка как единое решение, так или иначе разные библиотеку будут велосипедить своЁ
Ну много да, года до 2015 почти четверть штатовского игрового аутсорса уходило в СНГ. Щас конечно поменьше, но платить ООО "ТехКранч" десятую часть тамошней разработки, получая сравнимое, а зачастую и повыше качество, для многих является решаюшим фактором независимо от лозунгов и цвета волос потуса. А оставшиеся 2% можно и пропить
Ну всегда есть вариант написать - свою с дамами и преферансом, ктож запрещает. Если хочется технических, то их тоже есть (https://habr.com/ru/articles/687146/), но как показывает практика написания технических статей они редко собирают больше 10 плюсов
это особенности использования std релизаций, и это одна из причин, почему в продакшен коде используют альтернативы типа abseil или EASTL, либо резервируют x2-x3 предполагаемого числе итемов и получают нужное поведение
стандартный мап без хаков это сбалансированное дерево, обычно красно-чёрное. Каждый элемент дерева это отдельный узел, и для каждого узла выделяется память под сам узел (value + 2–3 указателя + цвет), так что да - память выделяется отдельно при каждой вставке. Держать некий набор узлов про запас это уже отдельные хаки вендора, но например мс таким не страдает, поэтому у них самое медленное дерево. с unordered_map сложнее, там выделяется массив бакетов, но сами ноды через new, т.е. все равно аллокация будет в какомто виде. Если нужно совсем без аллокаций (условно 1 раз на создании), то надо смотреть в сторону flat_has_map, fixed_map и им подобных. Ничего этого в стд нет, flat_map есть в 23 стандарте, но насколько я видел у вендоров... их до сих пор не сделали на конец 25 года, т.е. их по факту нет... с flat_hash_map вообще беда, только сторонние либы
Строки в самом движке это 1% использования, в основном строки приходят из ассетов и ссылки на них держать не получится. На этом кадре ассет есть, на следующем уже нет. Так что либо копия, либо ее сурогатт
Хабр - открытая площадка, где каждый может написать материал в том стиле, который предпочитает нужным. Надеюсь вам не составит большого труда сделать статью об этом, бо время для комментария с подробным анализом нашлось же... Тегните меня там - покритикую ваш опус в духе стремительного домкрата
Вопрос в другом, о скольких животных мы не знаем или забыли? Я например вот не знал про TString и Штроку, а могли выйти хорошие экземпляры, и к сожалению забыл написать про AnsiString/MFCString, хотя потратил на работу с ними лет пять жизни точно
Все так, единственная поправочка, бизнес уже продал игру с костылем владельцу xbox, выплатил зп разрабам и рекламирует новую игру, где здесь место и время для поиска идеальной строки в степях дедлайнов решительно непонятно. А если серьезно, то есть устоявшийся набор решений eastl::fixed_string, fstring, xstring и попытки заиспользовать чтото другое быстро отсекутся на ревью думающим лидом. Бардак конечно, но бардак управляемый...
Это подбор фоток под темы абзацев + несколько фильтров в фотошопе + ручные правки. Я пробовал нагенерить это промтами, но в итоге выбрал лимиты и сдался. Оказалось проще отдать человеку :)
если есть подозрение на коллизию, делаем дабажный ID который хранит еще и строку из которой был сделан и запускаем с ним. Ловим колиизию и думаем как фиксить.
В том диапазоне текста, что набирается при использовании тегов, имен текстур звуков и моделей в игровых движках - я коллизий за все время работы встречал может пару раз. И заканчивалось это изменением имени текстуры, либо переход на 64битный хеш, ибо по времени сравнения u32/u64 разницы нет
Честно говоря, не знаю что ответить. У меня есть подписка на несколько хабов - плюсы, игрострой и научпоп, где я читаю статьи и нескольких авторов и... собственно это весь контент, который я читаю на хабре последние лет десять. Корпораты как-то стороной прошли, меня звали туда постить, но я слишком ленив Ж)
Для @denis-19 все же лучше поставить его график, а вообще интересно получилось. Пишу просто для себя, сейчас пишу мало, гораздо инетереснее читать других авторов. А почему меня выбрали? я так-то не топе выборки даже.
не получится, потому что любая попытка стереть тип у строк упирается в несовместимость моделей представления данных, а не в отсутствие абстракции. Если возвращать условный
char32_tто придется декодировать UTF-8/UTF-16/UTF-32, которые тоже разные. Получается что type erasure превращается в полноценный transcoding layer и очередной тринадцатый станадарт и несет огромные накладные расходы, значит это уже не совсем укладывается стринг вьюху, т.е. пока это не будет сделано на уровне языка как единое решение, так или иначе разные библиотеку будут велосипедить своЁНу много да, года до 2015 почти четверть штатовского игрового аутсорса уходило в СНГ. Щас конечно поменьше, но платить ООО "ТехКранч" десятую часть тамошней разработки, получая сравнимое, а зачастую и повыше качество, для многих является решаюшим фактором независимо от лозунгов и цвета волос потуса. А оставшиеся 2% можно и пропить
Ну всегда есть вариант написать - свою с дамами и преферансом, ктож запрещает. Если хочется технических, то их тоже есть (https://habr.com/ru/articles/687146/), но как показывает практика написания технических статей они редко собирают больше 10 плюсов
Это роялти фри фотки из гугла + обработка фотошопом от моего знакомого художника из студии Playkot
это особенности использования std релизаций, и это одна из причин, почему в продакшен коде используют альтернативы типа abseil или EASTL, либо резервируют x2-x3 предполагаемого числе итемов и получают нужное поведение
Вы бы хоть тег /sarcasm добавили, а то я даже не сразу понял тонкость шутки :)
стандартный мап без хаков это сбалансированное дерево, обычно красно-чёрное. Каждый элемент дерева это отдельный узел, и для каждого узла выделяется память под сам узел (value + 2–3 указателя + цвет), так что да - память выделяется отдельно при каждой вставке. Держать некий набор узлов про запас это уже отдельные хаки вендора, но например мс таким не страдает, поэтому у них самое медленное дерево. с unordered_map сложнее, там выделяется массив бакетов, но сами ноды через new, т.е. все равно аллокация будет в какомто виде. Если нужно совсем без аллокаций (условно 1 раз на создании), то надо смотреть в сторону flat_has_map, fixed_map и им подобных. Ничего этого в стд нет, flat_map есть в 23 стандарте, но насколько я видел у вендоров... их до сих пор не сделали на конец 25 года, т.е. их по факту нет... с flat_hash_map вообще беда, только сторонние либы
Строки в самом движке это 1% использования, в основном строки приходят из ассетов и ссылки на них держать не получится. На этом кадре ассет есть, на следующем уже нет. Так что либо копия, либо ее сурогатт
Хабр - открытая площадка, где каждый может написать материал в том стиле, который предпочитает нужным. Надеюсь вам не составит большого труда сделать статью об этом, бо время для комментария с подробным анализом нашлось же... Тегните меня там - покритикую ваш опус в духе стремительного домкрата
Вопрос в другом, о скольких животных мы не знаем или забыли? Я например вот не знал про TString и Штроку, а могли выйти хорошие экземпляры, и к сожалению забыл написать про AnsiString/MFCString, хотя потратил на работу с ними лет пять жизни точно
Все так, единственная поправочка, бизнес уже продал игру с костылем владельцу xbox, выплатил зп разрабам и рекламирует новую игру, где здесь место и время для поиска идеальной строки в степях дедлайнов решительно непонятно. А если серьезно, то есть устоявшийся набор решений eastl::fixed_string, fstring, xstring и попытки заиспользовать чтото другое быстро отсекутся на ревью думающим лидом. Бардак конечно, но бардак управляемый...
А дело не в s1
Тут более техничная статья про xstring https://habr.com/ru/articles/873016/ и поменьше объемом
Это подбор фоток под темы абзацев + несколько фильтров в фотошопе + ручные правки. Я пробовал нагенерить это промтами, но в итоге выбрал лимиты и сдался. Оказалось проще отдать человеку :)
если есть подозрение на коллизию, делаем дабажный ID который хранит еще и строку из которой был сделан и запускаем с ним. Ловим колиизию и думаем как фиксить.
А это что за зверь то такой?
В том диапазоне текста, что набирается при использовании тегов, имен текстур звуков и моделей в игровых движках - я коллизий за все время работы встречал может пару раз. И заканчивалось это изменением имени текстуры, либо переход на 64битный хеш, ибо по времени сравнения u32/u64 разницы нет
Честно говоря, не знаю что ответить. У меня есть подписка на несколько хабов - плюсы, игрострой и научпоп, где я читаю статьи и нескольких авторов и... собственно это весь контент, который я читаю на хабре последние лет десять. Корпораты как-то стороной прошли, меня звали туда постить, но я слишком ленив Ж)
Для @denis-19 все же лучше поставить его график, а вообще интересно получилось. Пишу просто для себя, сейчас пишу мало, гораздо инетереснее читать других авторов. А почему меня выбрали? я так-то не топе выборки даже.
Языки программирования бывают двух видов: те, на которые все жалуются, и такие, на которых никто не пишет. (с) Народная мудрость