sql >> Database teknologi >  >> RDS >> Oracle

Asynkron I/O-intensiv kode kører langsommere end ikke-asynkron, hvorfor?

Den asynkrone version vil altid være langsommere end den synkrone version, når der ikke er nogen samtidighed. Den udfører alt det samme arbejde som den ikke-asynkroniserede version, men med en lille mængde overhead tilføjet for at administrere asynkroniteten.

Asynkroni er fordelagtigt med hensyn til ydeevne ved at tillade forbedret tilgængelighed. Hver enkelt anmodning vil være langsommere, men hvis du laver 1000 anmodninger på samme tid, vil den asynkrone implementering være i stand til at håndtere dem alle hurtigere (i hvert fald under visse omstændigheder).

Dette sker, fordi den asynkrone løsning tillader den tråd, der var allokeret til at håndtere anmodningen, at gå tilbage til poolen og håndtere andre anmodninger, hvorimod den synkrone løsning tvinger tråden til at sidde der og ikke gøre noget, mens den venter på, at den asynkrone operation er fuldført. Der er overhead i at strukturere programmet på en måde, der tillader tråden at blive frigjort til at udføre andet arbejde, men fordelen er den pågældende tråds evne til at gå til andet arbejde. I dit program er der intet andet arbejde, som tråden skal udføre, så det ender med at blive et nettotab.



  1. Håndtering af tidszone i webapplikation

  2. SQLite - Opret en database

  3. Forespørgsel tilskud til en tabel i postgres

  4. Hvordan listes tilgængelige forekomster af SQL-servere ved hjælp af SMO i C#?