Загрузка мира со сборкой модов печатает десятки тысяч строк: каждое исключение мода — стек на два десятка строк. Консоль рисовала их по одной и после каждой прокручивалась вниз, заставляя браузер пересчитывать раскладку всего списка. Десять тысяч строк блокировали вкладку на 29 секунд, и запуск сервера выглядел как зависшая панель. Строки копятся и выводятся пачкой раз в кадр: те же десять тысяч теперь занимают 14 мс. Узлы сверх предела списка не создаются вовсе, а на скрытой вкладке очередь ограничена, чтобы не расти в памяти. Заодно вывод игрового сервера больше не гоняется через словарь переводов: он английский, в словаре менеджера его нет, а перебор шаблонов регулярками на таком потоке стоит дорого. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19 lines
691 B
Go
19 lines
691 B
Go
package api
|
|
|
|
import "testing"
|
|
|
|
// Вывод игрового сервера идёт мимо словаря: он английский, а перебор шаблонов
|
|
// на десятках тысяч строк загрузки мира стоит дорого.
|
|
func TestTranslatableOnlyManagerStreams(t *testing.T) {
|
|
for _, stream := range []string{"manager", "task"} {
|
|
if !translatable(stream) {
|
|
t.Errorf("строки потока %q должны переводиться", stream)
|
|
}
|
|
}
|
|
for _, stream := range []string{"stdout", "stderr", ""} {
|
|
if translatable(stream) {
|
|
t.Errorf("строки потока %q переводить незачем", stream)
|
|
}
|
|
}
|
|
}
|