当前位置: 首页 > news >正文

ASIO网络调试助手之四:浅谈QTcpServer性能

网络上有些质疑Qt Network模块性能的声音,本文将从理论和压测两个方面对比ASIO tcp server和QTcpServer在Windows上的性能,最后给出结论。

一.理论

QTcpServer在Windows上的实现是基于select模型,源码位置:5.12.6\Src\qtbase\src\network\socket\qnativesocketengine_win.cpp
QTcpServer的源码分析详见:Qt基础之三十四:QTcpSocket和QTcpServer源码分析
ASIO tcp server在Windows上的实现是基于IOCP模型,源码位置:asio-1.30.2\include\asio\detail\impl目录中
在连接数少的情况下,select和IOCP没有明显的性能差异;但是在高并发场景,IOCP支持的连接数和吞吐量不是select能比的。

二.压测

用 ping pong 协议来测试吞吐量,ping pong 协议是客户端和服务器都实现 echo 协议。当 TCP 连接建立时,客户端向服务器发送一些数据,服务器会 echo 回这些数据,

http://www.lryc.cn/news/467523.html

相关文章:

  • 快手 日常实习一面面经
  • Cursor零基础小白教程系列 - 创建你的第一个Cursor 项目
  • 通用序列化和反序列化实现思路
  • 书生营第四期L0G2000 Python 基础知识
  • Day12-数据库服务冗余架构
  • js监听div尺寸,ResizeObserver
  • STM32与openmv的串口通信
  • C#基于SkiaSharp实现印章管理(11)
  • Spring使用@Async出现循环依赖原因以及解决方案
  • 如何训练 RAG 模型
  • 鸿蒙网络编程系列34-Wifi热点扫描及连接示例
  • LVS三种模式工作原理
  • 【二轮征稿启动】第三届环境工程与可持续能源国际会议持续收录优质稿件
  • 网络安全——防火墙技术
  • Missing classes detected while running R8报错解决方案
  • 智能指针
  • 通过DevTools逃离Chrome沙盒(CVE-2024-6778和CVE-2024-5836)
  • 手持无人机飞手执照,会组装调试入伍当兵有多香!
  • 项目经理好累好烦啊,不想干了....
  • 论技术人员“技术人格”的重要意义
  • Kafka异常重试方案小记
  • 非页面缓冲池占用过高处理方法
  • 【Linux】进程信号(下)
  • FlinkCDC 实现 MySQL 数据变更实时同步
  • JavaWeb——Maven(4/8):Maven坐标,idea集成-导入maven项目(两种方式)
  • 实现uniapp天地图边界范围覆盖
  • 思科网络设备命令
  • Egg.js使用ejs快速自动生成resetful风格的CRUD接口
  • 自动化抖音点赞取消脚本批量处理
  • 基于YOLOv8深度学习的智能车牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战