bra*_*tao 3 c++ performance networking udp
我需要制作一个能够监听并回答UDP数据包的服务器,它将监听10个端口.
数据包非常小,不超过20个字节.每个数据包都将修改或搜索到一个巨大的哈希表.
但它必须每秒处理15k数据包.
我可以用c,c ++或qt开发.
是否有任何特殊指导方针需要满足此要求?什么是基本设计?是否需要线程?
对于这种性能,我会考虑select()基于"换向器循环":
select()以确定具有可读数据的套接字您可以构建一个select()分析结果的简单表.
这种方法将为您提供最佳性能,因为它可以尽可能接近操作系统调用,并且开销最小.它作为单个进程运行,最小化上下文切换并获得最佳缓存位置.
接下来,如果您发现某些内容受CPU限制,请考虑使用具有多个线程或进程的多个CPU内核的方法.例如,您是否可以让每个处理器处理10个套接字中的N个,并在共享内存中使用哈希表.
最后,我要小心使用大量线程(例如大型工作线程池等).在极端性能级别,线程开销可能会变得很大.
| 归档时间: |
|
| 查看次数: |
2075 次 |
| 最近记录: |