Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Asynchroner I/O-intensiver Code läuft langsamer als nicht asynchroner Code, warum?

Die asynchrone Version ist immer langsamer als die synchrone Version, wenn keine Parallelität vorhanden ist. Es macht die gleiche Arbeit wie die nicht-asynchrone Version, aber mit einem kleinen Overhead, der hinzugefügt wird, um die Asynchronität zu verwalten.

Asynchronität ist im Hinblick auf die Leistung vorteilhaft, indem sie eine verbesserte Verfügbarkeit ermöglicht. Jede einzelne Anfrage wird langsamer sein, aber wenn Sie 1000 Anfragen gleichzeitig stellen, kann die asynchrone Implementierung sie alle schneller verarbeiten (zumindest unter bestimmten Umständen).

Dies liegt daran, dass die asynchrone Lösung es dem Thread, der für die Verarbeitung der Anforderung zugewiesen wurde, ermöglicht, zum Pool zurückzukehren und andere Anforderungen zu verarbeiten, während die synchrone Lösung den Thread zwingt, dort zu sitzen und nichts zu tun, während er auf den Abschluss des asynchronen Vorgangs wartet. Das Programm so zu strukturieren, dass der Thread für andere Arbeiten freigegeben werden kann, ist mit Overhead verbunden, aber der Vorteil ist die Fähigkeit dieses Threads, andere Arbeiten zu erledigen. In Ihrem Programm gibt es keine andere Arbeit für den Thread, also endet es mit einem Nettoverlust.