성능 측면에서 어느 것이 더 낫습니까? 선택/폴링 또는 비동기 I/O? 필자가 이전에 사용한 select/poll은 반복적으로 커널에 데이터를 요청하는 반면 비동기 I/O는 데이터 가용성에 대한 커널의 알림에 의존합니다. 그러나 select/poll도 커널 알림에 의존한다는 것을 알고 있습니다. 따라서 성능 측면에서 볼 때 둘 다 같습니다. 유일한 차이점은 선택/폴링 블록 인 반면 비동기 I/O는 그렇지 않습니다. 나는 맞습니까? 나는 무엇인가 놓치고 있습니까?선택/폴링 대 비동기 I/O의 성능
2
A
답변
-1
비동기 I/O에서는 주기적으로 루프를 반복하여 주기적으로 읽을 새 데이터가 있는지 확인해야합니다. 이로 인해 CPU가 많이 사용됩니다. CPU 전원을 사용하지 않고 블록을 선택/폴링합니다. 내부적으로 루프되지 않습니다.
2
select/poll도 준비된 파일 개발자에 대한 커널 알림에 의존합니다. 그러나 select/poll의 단점은 Systemcall-Handler가 Kernel-Space에서 실행되기 때문에 호출되는 즉시 차단된다는 것입니다.
실제 비동기 I/O는 Linux의 LibAIO와 Windows의 IOCP를 통해 이루어집니다. 내가 아는 한 그들은 User Space에서 호출 프로세스/스레드를 차단하지 않으며 실제 overlapped I/O를 허용합니다.
즉 비동기 논 블로킹 I/O (LibAIO & IOCP)는 호출 스레드를 차단하지 않고 실제 겹친 I/O를 허용하기 때문에 빠릅니다. 선택/폴링도 비동기식이지만 비동기식 차단입니다. 그리고 btw 선택 및 설문 조사는 다른 특정 문제로 고통 받아서 규모가 잘 맞지 않습니다.
희망은 내가 도와 줄 수 있습니다. (나는 이것에 너무 초짜 다 :))
관련 문제
- 1. 동기화 대 .NET의 비동기 소켓 성능
- 2. 페이지 메서드 성능 대 비동기 http 처리기
- 3. CALayer 성능 대 UIImageView 성능
- 4. 저장 IO의 루비의 파일
- 5. 처리기 대 안드로이드의 비동기 호출
- 6. 호출 대리자 대 메서드의 성능
- 7. USB - 동기화 대 비동기 대 semi-async
- 8. XLinq 대 SqlDataReader 성능
- 9. 성능 : XDocument 대 XmlDocument
- 10. nspropertylistserialization 대 nsjsonserialization의 성능
- 11. DataContractSerializer 대 BinaryFormatter 성능
- 12. 서블릿 대 Struts2 성능
- 13. XPath 대 DOM의 성능
- 14. 필드 대 실제 성능
- 15. 대 C++ 성능
- 16. 성능 카운터 대 ETW
- 17. Phonegap 앱 성능 대 기본 앱 성능
- 18. 비동기 서블릿 대 동기 서블릿
- 19. WPF DataContext 대 ItemsSource 성능
- 20. C# : XNA 대 XNA (성능)
- 21. ESENT 성능 Vista 대 XP
- 22. HtmlUnit 대 HttpUnit의 성능 비교
- 23. Drupal 대 WordPress 성능 비교
- 24. 성능 테스트 Apache 대 NodeJ
- 25. 성능 차이 Kerberos 대 NTLM
- 26. 성능 : 조건 테스트 대 할당
- 27. WPF 성능 : 템플릿 대 UserControl
- 28. Linux 대 Solaris의 스레드 성능
- 29. 부동 소수점 대 정수 성능
- 30. CLR 2.0 대 4.0 성능?