在异步grpc中,我尝试为每个连接创建一个新的grpc :: completionqueue。 然后,我发现一个问题。cq的构建速度似乎并不快。
//It test with folly::benchmark
BENCHMARK(CompletionQueue){
grpc::CompletionQueue cq;
}
BENCHMARK(folly_mpmcqueue){
folly::MPMCQueue<int> cq;
}
BENCHMARK(std_queue){
std::queue<int> cq;
}
结果是:
============================================================================
test.cpp relative time/iter iters/s
============================================================================
CompletionQueue 63.99us 15.63K
folly_mpmcqueue 67.12ns 14.90M
std_queue 220.97ns 4.53M
============================================================================
Cq似乎无法自由构建和销毁。 那么我应该重用它们而不是为每个连接创建一个新的连接吗?
答案 0 :(得分:0)
是的,可以重用完成队列。它们没有绑定到单个连接或呼叫。