Создатели проекта RPCS3 продолжают радовать игроков оптимизациями. Недавно они рассказали про очередное техническое достижение — эмулятор PlayStation 3 может работать быстрее.
Разработчик под ником Megamouse обратил внимание на то, что «после компиляции первых модулей компиляция PPU загружает процессор лишь примерно на 20%». Он решил разобраться в причинах такого поведения системы:
Поиски привели меня к операциям выделения и освобождения памяти в LLVM: похоже, все они используют одну общую блокировку. Проблема в том, что со временем память фрагментируется, и множеству потоков приходится ждать, пока снова не освободится достаточно большой непрерывный участок.
Megamouse предложил решение, которое позволять улучшить производительность эмулятора RPCS3 — перейти на SegmentHeap (механизм распределения памяти в Windows). В ходе тестов Gran Turismo 6 на ПК с процессором AMD Ryzen 9 9950X3D «время перекомпиляции PPU/SPU сократилось с 2 мин 50 с до 1 мин 55 с; на 48 % быстрее!».
Однако Megamouse предупредил, что это решение требует дополнительных тестов. Он допускает, что могут возникнуть технические проблемы:
Не знаю, не сломает ли [SegmentHeap] что-нибудь и как скажется на производительности в целом. Но теперь при компиляции PPU мой процессор практически постоянно загружен почти на 100%, а сама компиляция идёт более чем втрое быстрее.
Ускорение перекомпиляции не означает, что производительность (FPS) в Gran Turismo 6 или иных играх на RPCS3 увеличится на 48%. Это изменение снизит время ожидания в случаях, когда нужна перекомпиляция.