이벤트 시스템은 놀랍고, 다루기 어려운 코드 길들이기를 만들고 객체와 게임 루프를 쉽게 전달하여 게임을 역동적으로 만들 수 있습니다. 현재 구현의 효율성으로 어려움을 겪고 있습니다. 현재 객체 목록을 응답하는 이벤트로 분리하는 약간의 최적화는 놀라운 일 이었지만 더 많은 일을 할 수 있어야합니다.
현재 두 가지 방법이 있습니다.
가장 간단한 : 이벤트가 전송되면 모든 객체가 벡터에 추가됩니다 . 모든 객체는 handle_event () 메소드를 통해 이벤트가 전송됩니다.
더 복잡 : 문자열이 키이고 int 값인 맵이 있습니다. 이벤트 유형이 추가되면이지도에 추가되며 int는 단순히
객체 벡터의 벡터 가 증가하고 (더 나은 방법이 있어야 함) 새 벡터를 뒤로 밀어 해당 유형의 이벤트를 처리합니다.
이벤트가 호출되면 단순히 eventTypes 맵에서 해당 int를 객체 벡터의 벡터 내부 유형으로 호출하고 해당 이벤트를 해당 이벤트 유형을 처리하는 각 객체로 보냅니다.
이 첫 번째 방법은 많은 객체에 대해 (분명히) 느리지 만 매우 적은 객체에 대해서는 매우 빠릅니다. 두 번째 방법은 다른 유형의 이벤트를 처리하려는 큰 객체에서는 매우 빠르지 만 동일한 유형의 이벤트를 처리하는 객체는 객체 당 첫 번째 방법보다 느립니다.
더 빠른 (런타임 현명한) 방법이 있습니까? 문자열 유형에서 정수를 찾는 더 빠른 방법이 있습니까? (처음에는 열거 형이 있었지만 원하는 수준의 역 동성 때문에 필요한 사용자 정의 유형을 허용하지 않았습니다.)