변경하지 않으려는 경우 디스패처에 이벤트를 저장하는 것이 더 효율적입니다. 비용이 많이 드는 것은 아닙니까? 이미 저장된 이벤트를 파견하면 잃는 정보가 있습니까?이벤트가 일반적으로 발송시 생성되는 이유는 무엇입니까?
답변
기본적으로 묻는 것은 개체 풀링의 특정 사용 사례와 개체 풀링과 개체 생성의 성능입니다. 자바와 같은 언어는 자바가 당신을 위해 이것을하기 때문에 객체 풀링의 많은 이점을 얻지 못합니다. 그리고 자신이 직접하는 것보다 더 낫습니다. 실제로 Java 엔지니어는 Java가 사용자가 할 수있는 것보다 수천 가지 객체를 더 잘 할당하고 크기를 조정하고 처리하기 때문에 이렇게하지 말아야한다는 것을 분명히했습니다. 이것이 GC의 핵심입니다. 자바에서 객체 할당은 이미 당신을 위해 풀링을하고 있지만 낮은 수준에서 자바와 다른 언어로 된 메모리 할당은 C보다 빠릅니다. 자바에서 할당 된 모든 객체는 JVM에 의해 준비된 메모리 풀에서 나옵니다.
http://www.ibm.com/developerworks/java/library/j-jtp09275.html?ca=dgr-jw22JavaUrbanLegends
이벤트가 대신 그들을 캐시의 파견시 생성되는 또 다른 이유는, 그들 각각의 파견 사이의 변화를 매개 변수를 전달합니다. 예를 들어, 입력 한 문자, 마우스를 클릭 한 곳 등. 재활용 이벤트는 좋은 아이디어처럼 들릴 수 있습니다. 갑자기 잘못된 이벤트로 오래된 정보를 보내고 있습니다. 매번 새로운 이벤트를 추가하고 올바른 데이터로 올바르게 초기화하는 것이 좋습니다. 작성자가 더 간단하고 오류가 발생하기 쉽습니다.
이벤트를 다시 사용하면 기술적 인 문제가 발생할 수 있습니다. 이벤트 취소 계획은 보통 일부 청취자가 디스패치 한 후 수정 된 이벤트에 해당 정보를 저장합니다. actionscript에서 event.preventDefault()를 호출하여 이벤트 리스너의 체인에 영향을 줄 수 있습니다. preventDefault가 호출 된 후 해당 이벤트를 다시 사용하기 시작하면 어떻게됩니까? 그리고이 이벤트가 아직 시작되지 않은 리스너 (callLater/invokeLater는 어렵게 만듭니다)가이 이벤트를 사용하고 있지 않다는 것은 언제 확실합니다. Java/Actionscript에 콜백이 없습니다.이 콜백 이벤트는이 이벤트가 재사용해도 괜찮습니다 (풀에 객체를 반환하는 교정 의미가 없음).
그렇다고해서 이벤트를 개최하고 재사용하는 것이 더 효과적이라고 생각하지는 않습니다. 그러나 고성능 케이스가 더 빠르다고해서 매번 모든 것이 좋은 아이디어라는 것을 의미하지는 않습니다. 문제가 발생할 때까지 최적화하지 마십시오.
+1 이유가 있지만 특히 "새로 만들기"동사를 사용하는 경우. –
생각해 보겠습니다. ActionScript 3.0 (질문에 태그가 추가되어 있음)에 추가하면 개체 풀링이 성능을 상당히 향상시킬 수 있습니다. http://lab.polygonal.de/2008/06/18/using-object-pools/. JVM이 더 정교하다고 생각합니다. – Allan
- 1. 경고가 생성되는 이유는 무엇입니까?
- 2. SQLite에서 저널 파일이 생성되는 이유는 무엇입니까?
- 3. std :: __ non_rtti_object 예외가 생성되는 이유는 무엇입니까?
- 4. 콜백 이벤트가 필요한 이유는 무엇입니까?
- 5. 이 이벤트가 발생하는 이유는 무엇입니까?
- 6. 예외가 일반적으로 클래스 이름에 'Exception'접미사가있는 이유는 무엇입니까?
- 7. ASPNETDB.mdf가 생성되는 이유는 무엇이며 어떻게 제거합니까?
- 8. ASP.Net MVC - 컨트롤러가 favicon.ico 용으로 생성되는 이유는 무엇입니까?
- 9. 모든 클래스에 대한 구현 대신 인터페이스가 생성되는 이유는 무엇입니까?
- 10. 앱 위젯을 추가 할 때마다 AppWidgetProvider가 생성되는 이유는 무엇입니까?
- 11. 왜 프록시 코드가 svctuil에 의해 생성되는 이유는 무엇입니까?
- 12. WebSocket.onmessage 이벤트가 실행되지 않는 이유는 무엇입니까?
- 13. jQuery 이벤트가 실행되지 않는 이유는 무엇입니까?
- 14. 이벤트가 발생하기 위해 누군가를 구독해야하는 이유는 무엇입니까?
- 15. 이 경우 이벤트가 다르게 작동하는 이유는 무엇입니까?
- 16. Dojo 호버 이벤트가 작동하지 않는 이유는 무엇입니까?
- 17. dblclick 이벤트가 click 이벤트처럼 작동하는 이유는 무엇입니까?
- 18. 터치 이벤트가 내 Android 프레임을 파괴하는 이유는 무엇입니까?
- 19. 이벤트 유형이 일반적으로 이벤트의 클래스 정의 내에 저장되는 이유는 무엇입니까?
- 20. Collections.checkedMap과 친구들이 더 일반적으로 사용되지 않는 이유는 무엇입니까?
- 21. 분할 작업이 일반적으로 컴퓨터에서 더 많은 리소스를 사용하는 이유는 무엇입니까?
- 22. Convert.ToDateTime이 생성되는 형식 변경
- 23. "선언적 보안"이란 무엇입니까? 일반적으로
- 24. 델리게이트 형식의 메서드가 내부적으로 생성되는 방식은 무엇입니까?
- 25. WCF 클라이언트에서 생성되는 '지정된'속성을 방지하는 방법은 무엇입니까?
- 26. jqGrid : 내가 그리드에 대해 정의한 이벤트가 실행되지 않는 이유는 무엇입니까?
- 27. 내 UIImageView 하위 클래스에서 터치 이벤트가 수신되지 않는 이유는 무엇입니까?
- 28. DragOver/Enter 이벤트가 Canvas에서 배경을 필요로하는 이유는 무엇입니까?
- 29. 마우스 포인트가 요소 위에 놓여도 MouseLeave 이벤트가 발생하는 이유는 무엇입니까?
- 30. C#에서는 이벤트가 발생할 때마다 null 체크를 작성해야하는 이유는 무엇입니까?
로버트 페너의 신호는이 질문을하는 다른 누구에게나 유용 할 수 있습니다. http://flashblog.robertpenner.com/2009/09/my-new-as3-event-system-signals.html – Pup