170 похожих чатов

Здравствуйте, хочу поделится интересной ситуацией, в моей игрушке каждый снаряд

просчитывается на сервере, и после 5+ одновременно выпущенных снарядов начинало сильно лагать. Я думал проблема в производительности, и частично это оказалось так. Дело было в том, что я выводил позицию каждого снаряда в консоли каждый тик. Как только я это убрал работать стало просто великолепно. Неужели console.log так сильно режет производительность?

29 ответов

22 просмотра

да

Dlazder- Автор вопроса
Dmitriy Knyaginin
да

Странно что об этом никто не говорит) Я бы сам не подумал что это прям так сильно влияет)

Сам расчёты реализуешь или физический движок используешь?

Dlazder
Странно что об этом никто не говорит) Я бы сам не ...

хочешь логи есть перенаправление в файл, ну или в кафку

Dlazder- Автор вопроса
Антон Горбачёв
Сам расчёты реализуешь или физический движок испол...

Сам. У меня там простейшая 2д графика. Я толком не слышал про готовые движки...

Dlazder- Автор вопроса
Антон Горбачёв
Их много, Box2D, Matter.js, Rapier, Bullet и тд.

Спасибо, надо будет посмотреть. Потому что самому ничего серьезного не написать если просто реализовывать игровые механики а не изначально пытаться сделать движок, и на нем уже строить...

У тебя снаряды удалялись когда нибудь? И ввод вывод может резать производительность, да.

Dlazder
Спасибо, надо будет посмотреть. Потому что самому ...

Matter.js проще всего, если для клиентской части не используется фреймворк в котором по дефолту другой движок встроен

Dlazder
А причем тут фреймворк?

В некоторых фреймворков может быть уже встроен движок, а встроенный обычно проще юзать

Вывод в консоль всегда тормозит

если мне память не изменяет, вывод в консоль через console.log - блокирующая операция, поэтому будут фризы.. могу ошибаться, поправьте

Dlazder- Автор вопроса
Aleksandr Vyatkin
если мне память не изменяет, вывод в консоль через...

Если я не ошибаюсь, зависит от ОС, вроде, в доке ноды написано, что на windows вывод в stdout асинхронный, на Linux нет.

Danil Kincharov
Если я не ошибаюсь, зависит от ОС, вроде, в доке н...

хм.. я подумал, а если вывод в консоль будет неблокирующим, то в выводе же может быть вообще чушь редкостная, если логировать всякую асинхронщину

Aleksandr Vyatkin
хм.. я подумал, а если вывод в консоль будет небло...

Я не эксперт по выводам в консоль, но выскажу предположение, что если stream, в который ты пишешь один и тот же, то порядок вывода нарушаться не должен

Danil Kincharov
Если я не ошибаюсь, зависит от ОС, вроде, в доке н...

Writes may be synchronous depending on what the stream is connected to and whether the system is Windows or POSIX: Files: synchronous on Windows and POSIX TTYs (Terminals): asynchronous on Windows, synchronous on POSIX Pipes (and sockets): synchronous on Windows, asynchronous on POSIX

а ты попробуй через пино логать и потом скажи насколько улучшилась ситуация

Там понятное дело что будет в разы лучше, так как там логи копятся и батчем выгружаются обычно)

Dlazder- Автор вопроса
Anton K.
а ты попробуй через пино логать и потом скажи нас...

Да мне нет необходимости логать, просто убрал и все)

Антон Горбачёв
Там понятное дело что будет в разы лучше, так как ...

да вроде не копятся так чтобы сильно ну могут задержаться да на пару секунд но потом по timestamp можно понять где какая последоваттельность

Антон Горбачёв
И пино вроде в браузере не работает?

ну он же писал что на сервере логал

Anton K.
ну он же писал что на сервере логал

А, может, помню что до этого про браузер рисали

Anton K.
да вроде не копятся так чтобы сильно ну могут заде...

Я к тому, что каждый лог не пишется по отдельности в стдаут, а они все разом отгружаются одним выводом обычно

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта