我们有一个典型的Web服务,它提供从远程数据库读取的JSON数据。我正在尝试返回Result和AsyncResult,每个都有以下配置:
play {
akka {
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
loglevel = WARNING
actor {
default-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
parallelism-max = 1
}
}
}
}
}
和一个
parallelism-factor = 1.0
parallelism-max = 5
以下是给出完成500个请求所花费的时间(平均5个读数)的观察结果:
1. parallelism-max=1 and parallelism-factor=1.0
Result :
Completion time = 291662 ms.
AsyncResult:
Completion time = 55601 ms
2. parallelism-max=5 and parallelism-factor=1.0
Result :
Completion time = 46419 ms.
AsyncResult:
Completion time = 46977 ms
我们可以看到,使用parallelism-max = 1,与Result相比,AsyncResult显然花费的时间更少。但是,对于parallelism-max = 5,Result和AsyncResult给出了非常相似的时序。 AsyncResult也不应该随着线程数量的增加而减少所需的时间吗? 请求帮助以了解这一观察背后的原因。