9 Punkte von xguru 2021-02-13 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
xguru 2021-02-13

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.