- Kontextwechselzeit: Async-Task 0.2µs vs. Kernel-Thread 1.7µs
→ Wenn der Wechsel durch I/O verursacht wird, verschwindet dieser Zeitunterschied (beide 1.7µs)
→ Wenn die Thread-Version auf nur einen einzelnen CPU-Kern beschränkt wird, verschwindet auch der Vorteil von Async (nahezu gleich)
-
Erzeugung neuer Tasks: Async-Task ~0.3µs vs. Kernel-Thread 17µs
-
Speichernutzung: Async-Task einige hundert Byte vs. Kernel-Thread 20KiB (9.5KiB User, 10KiB Kernel)
→ Das basiert auf Tasks, die fast nichts tun; bei realer Ausführung wird mehr benötigt
- 250.000 Async-Tasks lassen sich problemlos erzeugen, aber auf einem 4-Core-/32GiB-Laptop sind 80.000 Threads das Maximum
1 Kommentare
Ein Benchmark, der durchgeführt wurde, um nicht einfach nur zu sagen, dass Asynchronität in Bezug auf Leistung/Effizienz deutlich besser sei, sondern um auch etwas über die internen Abläufe zu verstehen.
Tatsächlich bringt die asynchrone Entwicklung viele Bugs und weitere Schwierigkeiten mit sich, sodass Vorsicht geboten ist.