- Баллы
- 76
- Ник в Minecraft
- Abcik
Всем привет!
Возникла необходимость в асинхронной загрузке мира без пролага.
Как мне удалось выяснить - пока это невозможно, так как загрузка миров происходит в главном потоке.
Поэтому, было принято решение не убрать её полностью, а максимально снизить, чтобы она стала незаметной.
Первое, о чем я подумал - нужно предварительно прогружать мир, а потом просто загружать его. Окей - делаем копию мира каждый раз!
Второе, о чем я подумал - раз загрузка происходит в основном потоке - необходим процессор, у которого большая производительность на ядро. Окей - покупаем i9 10900k, или 9900ks. ~5.3 ghz.
Третье, о чем я подумал - процессор то это хорошо, но передаваться то данные будут в память, поэтому нужна быстрая память! Ну допустим у нас есть - ddr4 4400mhz в двухканале.
Четвёртое и последнее - память это хорошо, но файлы то лежат на жестком диске, поэтому берем SSD m.2 3гб запись, 3200мб чтение.
Теперь, знатоки, внимание вопрос:
Учитывая все перечисленные манипуляции смогу ли я добиться незаметного отставания при загрузке мира, или может это всё вовсе не имеет смысла и отставание будет в любом случае?
Если я не правильно понимаю процесс загрузки мира - просьба объяснить доступным языком, спасибо.
Кому интересно - были проведены тесты на следующей конфигурации ПК:
i3 9100f
2x8gb 2400mhz
HDD wd blue (7200)
И вот результаты:
Создание мира в среднем длилось 2205 мс.
Загрузка мира в среднем длилась 700 мс.
Допустимая задержка (для 20 tps) - 50мс.
Возникла необходимость в асинхронной загрузке мира без пролага.
Как мне удалось выяснить - пока это невозможно, так как загрузка миров происходит в главном потоке.
Поэтому, было принято решение не убрать её полностью, а максимально снизить, чтобы она стала незаметной.
Первое, о чем я подумал - нужно предварительно прогружать мир, а потом просто загружать его. Окей - делаем копию мира каждый раз!
Второе, о чем я подумал - раз загрузка происходит в основном потоке - необходим процессор, у которого большая производительность на ядро. Окей - покупаем i9 10900k, или 9900ks. ~5.3 ghz.
Третье, о чем я подумал - процессор то это хорошо, но передаваться то данные будут в память, поэтому нужна быстрая память! Ну допустим у нас есть - ddr4 4400mhz в двухканале.
Четвёртое и последнее - память это хорошо, но файлы то лежат на жестком диске, поэтому берем SSD m.2 3гб запись, 3200мб чтение.
Теперь, знатоки, внимание вопрос:
Учитывая все перечисленные манипуляции смогу ли я добиться незаметного отставания при загрузке мира, или может это всё вовсе не имеет смысла и отставание будет в любом случае?
Если я не правильно понимаю процесс загрузки мира - просьба объяснить доступным языком, спасибо.
Кому интересно - были проведены тесты на следующей конфигурации ПК:
i3 9100f
2x8gb 2400mhz
HDD wd blue (7200)
И вот результаты:
Создание мира в среднем длилось 2205 мс.
Загрузка мира в среднем длилась 700 мс.
Допустимая задержка (для 20 tps) - 50мс.
Я добился задержки всего в 10мс-18мс ( при загрузке уже заранее созданого мира), на PaperSpigot 1.16.1 (С отключенной настройкой "keep-spawn-loaded"), на следующей конфигурации ПК:
i5 9600kf (Overclocked to 4.7GHZ)
DDR4 2x8gb 3200mhz
NVME SSD Sillicon Power 512gb (Запись - 3гб/с, Чтение - 3.2гб/с)
i5 9600kf (Overclocked to 4.7GHZ)
DDR4 2x8gb 3200mhz
NVME SSD Sillicon Power 512gb (Запись - 3гб/с, Чтение - 3.2гб/с)
Последнее редактирование: