Ускорение импорта OBJ в Блендере за счёт ускорения парсинга

Поменяли входные и выходные типы, что на больших сценах может сэкономить секунды.

Ускорение импорта 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 бита.

52
7 комментариев