꿈틀
정품인증자
GgumTeul_ d227258b933942838d63fb0bdf74713c
이해도 | 1.12 |
---|---|
게임버전 (BE) | 필요한게 있다면 알려주세요 |
스크립트 애드온 | 2.5.1 |
스크립트를 많이 만들고 복잡하게 만들다 보니 렉이 걸리네요
대부분 every n seconds 그리고 wait n seconds 구문 때문에 렉이 걸리는 것 같은데
이 렉을 줄이는 방법이 없을까요?
그리고 skquery 애드온을 사용해서 $ thread 였나 를 쓰면 멀티쓰레드 기능을 사용해 렉을 줄일 수 있다고 하는데, 쓰레드도 너무 많으면 렉이 걸린다고 하더라고요. 그래서 어느 정도가 적당한가요?
그리고 그 외에 스크립트 렉을 줄이는 방법이 있을까요?
스크립터브혼
2020.11.10'병목현상'이라는 용어가 있습니다. 물병에 든 물이 좁은 입구로 빠져 나오려 할때 안에 든 물이 입구가 막혀 천천히 흘러나오는 현상을 말하는데요. 프로그래밍도 마찬가지로 일순간 너무 많은 일을 수행하면 처리속도가 미쳐 일을 끝내지 못하고 늘어지는 현상이 있습니다.
every이벤트를 사용하는건 전혀 문제가 되지 않습니다.
일반적으로 랙이 생길정도로 처리량이 많아지는 경우는 반복적인 일을 한순간 처리하는 경우에 발생합니다.
사용자들이 event이벤트에서 한순간에 어마어마한 량의 일을 수행하려고 하는 경우가 많기 때문에 이벤트 사용을 자제하라고 말하는 거구요.
자신이 작성한 코드가 어떻게 동작하고, 어디서 의미없는 일을 하고있는지 스스로 찾아내야합니다.
멀티쓰레드는 간단한 연산을 할 때는 속도가 더 느립니다.
또한, 서버에서 발생하는 대다수의 이벤트는 멀티쓰레드에서 처리해선 안됩니다.
예를들어 플레이어가 많은 량의 블럭을 제거하는 일을 다른 스레드에서 연산한다하더라도,
결국 월드에 적용하기 위해선 서버 쓰레드가 결과를 받아 적용해야하기 때문에 의미없는 일입니다.
쓰레드가 적절하게 사용되는 경우는 아주 복잡한 연산, 외부 소스 활용 등 서버동작에 아무 관계없는 일을 처리할 때 입니다.