J'ai le code suivant:cadre de lecture: Async vs performances Sync
def sync = Action {
val t0 = System.nanoTime()
Thread.sleep(100)
val t1 = System.nanoTime()
Ok("Elapsed time: " + (t1 - t0)/1000000.0 + "ms")
}
def async = Action {
val t0 = System.nanoTime()
Async {
Future{
Thread.sleep(100)
val t1 = System.nanoTime()
Ok("Elapsed time: " + (t1 - t0)/1000000.0 + "ms")
}
}
}
Différence
entre code ci-dessus est que la synchronisation dormira sur le fil qui a reçu la demande et async dormira sur le fil séparé de sorte que le fil en charge de recevoir une demande peut continuer à recevoir des demandes sans bloquer. Lorsque je profile le thread, je vois une augmentation soudaine du nombre de threads créés pour les requêtes asynchrones comme prévu. Cependant, les deux méthodes ci-dessus avec une rampe de connexion simultanée de 20 secondes entraînent le même débit et la même latence. Je m'attendais à ce que l'async fonctionne mieux. Pourquoi cela serait-il?
Ils sont tous les deux vraiment la même chose. http://stackoverflow.com/questions/23997418/are-there-any-benefits-in-using-non-async-actions-in-play-framework-2-2/24004444#24004444 –