Ускорение импорта OBJ в Блендере за счёт ускорения парсинга
Поменяли входные и выходные типы, что на больших сценах может сэкономить секунды.
Сам фикс будет в 3.2. Про проблему Арас хорошо расписал.
Всё дело в том, что в старой реализации использовался StringRef, который в регистр не влезал. А к методу много обращений при парсинге. После переделки на больших сценах новая реализация может сэкономить секунды.
Было
StringRef drop_whitespace(StringRef str)
{
while (!str.is_empty() && is_whitespace(str[0]))
str = str.drop_prefix(1);
return str;
}
Стало
const char *drop_whitespace(const char *p, const char *end)
{
while (p < end && is_whitespace(*p))
++p;
return p;
}
Проблема проявляется на Винде из-за Calling convention на значениях, не влезающих в 64 бита.
7 комментариев