# GoSpeedTest **Repository Path**: liumou_site/GoSpeedTest ## Basic Information - **Project Name**: GoSpeedTest - **Description**: GoSpeedTest:一个专注于网络速度测试的开源项目,提供简单易用的API和界面,帮助用户快速准确地测量网络性能。 - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: https://gospeedtest.liumou.site/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-31 - **Last Updated**: 2026-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoSpeedTest 🚀 高性能网络测速工具,支持Web界面和CLI命令行访问 **最新版本 v1.1.0** - 新增统一格式化系统和基于时间的TCP测试支持 --- ## 🎯 什么是 GoSpeedTest? GoSpeedTest 是一个简单易用的网络测速工具,可以测试您的网络连接性能: - **延迟测试**:测量网络响应时间(Ping) - **下载速度**:测试下载带宽 - **上传速度**:测试上传带宽 - **Web界面**:美观的实时图表展示 - **CLI工具**:支持命令行快速测试 ### 🌐 前端来源 本项目的Web前端界面借鉴了 [LibreSpeed/speedtest](https://github.com/librespeed/speedtest) 的优秀实现,并进行了本地化适配和优化。 **当前项目地址**: ### 📄 许可证 本项目采用 **GNU Lesser General Public License v3 (LGPL v3)** 许可证发布。 - 您可以自由使用、修改和分发本项目 - 如果您修改了本项目的代码,需要开源您的修改 - 基于本项目的衍生作品也需要使用 LGPL v3 许可证 - 详细条款请查看 [LICENSE](LICENSE) 文件 --- ## ✨ 核心特性 ### 🚀 高性能架构 #### 1. **预生成测试数据** - ✅ 程序启动时生成 **4MB** 随机数据块 - ✅ 使用内存池优化,减少GC压力 - ✅ **优势**:避免每次请求重复生成,消除CPU瓶颈 #### 2. **流式传输优化** - ✅ 后端使用 `c.Writer.Flush()` 实时刷新 - ✅ 批量写入减少系统调用次数 - ✅ **优势**:支持最大速率传输,无协议栈瓶颈 #### 3. **零内存占用** - ✅ 只统计字节数,不存储数据 - ✅ 数据块立即丢弃 - ✅ **优势**:内存占用 < 1MB,支持无限数据量 ### 📊 性能实测数据 | 测试场景 | 平均速度 | 总数据量 | 内存占用 | 说明 | |---------|---------|---------|---------|------| | **CLI单连接** | **50+ Gbps** | 30GB/5秒 | **< 1MB** | TCP协议优化 | | **浏览器并发** | **107+ Gbps** | 64GB/5秒 | **< 1MB** | 多连接并行 | | **本地回环** | **无上限** | 任意 | **< 1MB** | 理论最大值 | --- ## ✨ v1.1.0 新功能 ### 🎯 统一格式化系统 v1.1.0 引入了全新的统一格式化系统,让测试结果更加清晰易读: **核心特性:** - ✅ **自动速率单位转换**:`59120.30 Mbps` → `59.12 Gbps` - ✅ **智能数据大小格式**:`838860800 bytes` → `800.00 MB` - ✅ **统一的测试结果输出格式** - ✅ **中英文双语质量评估** **格式化示例:** ``` TCP下载测试完成: 耗时: 0.12 秒 数据大小: 800.00 MB 下载速度: 59.12 Gbps 质量评估: 🟢 优秀 (Excellent) ``` ### 🌐 双协议支持 #### HTTP协议 - ✅ 基于Gin框架的Web服务器 - ✅ 浏览器兼容性好 - ✅ 支持所有测试类型 #### TCP协议 (v1.1.0 新增) - ✅ **基于时间的测试**:`-upload-duration` 参数 - ✅ **基于大小的测试**:默认2GB上传 - ✅ **高性能优化**:4MB数据块,批量发送 - ✅ **稳定性测试**:支持60秒+长时间测试 **TCP协议优势:** - 性能更高,适合高带宽网络 - 支持时间模式,解决高速网络测试过快问题 - 更好的错误处理和连接管理 ### ⏱️ 基于时间的TCP测试 为解决高速网络下测试时间过短的问题: **新增参数:** - `-upload-duration`:设置上传测试时长(秒) - 默认上传大小提升至 2GB **性能提升:** - **之前**:512MB上传在高速网络下<1秒完成,无法反映稳定性 - **现在**:默认2GB上传,或使用时间模式进行30-60秒稳定性测试 ### 📊 格式化功能详情 ```go // 速度格式化 FormatSpeed(59120.30) → "59.12 Gbps" // 数据大小格式化 FormatBytes(838860800) → "800.00 MB" // 测试结果格式化 FormatTestResult(&TestResult{ Type: "download", SpeedMbps: 59120.30, Bytes: 838860800, Duration: 0.12, }) → 标准化输出 ``` **质量评估标准:** - 🟢 优秀 (Excellent) - 🟡 良好 (Good) - 🟠 一般 (Fair) - 🔴 较差 (Poor) --- ## 📂 项目结构 ``` GoSpeedTest/ ├── cmd/ │ ├── client/ # CLI客户端 │ │ └── main.go # 客户端入口 │ └── utils/ # 工具函数 │ ├── http.go # HTTP协议测试 │ ├── tcp.go # TCP协议测试 │ ├── quality.go # 质量评估 │ ├── flags.go # 参数解析 │ └── version.go # 版本信息 ├── src/ │ ├── tcpclient/ # TCP客户端实现 │ │ ├── config.go # 配置管理 │ │ ├── connection.go # 连接管理 │ │ ├── download.go # 下载测试 │ │ ├── upload.go # 上传测试 │ │ └── ping.go # Ping测试 │ ├── tcpserver/ # TCP服务器实现 │ │ ├── server.go # 服务器主程序 │ │ ├── handler_upload.go # 上传处理器 │ │ ├── handler_download.go # 下载处理器 │ │ └── handler_ping.go # Ping处理器 │ └── utils/ # 公共工具 │ └── format.go # 格式化系统 (v1.1.0) ├── speed/ # HTTP服务器核心 │ ├── server.go # 服务器主程序 │ ├── server_init.go # 初始化 │ ├── download.go # 下载处理 │ ├── upload.go # 上传处理 │ ├── session.go # 会话管理 │ ├── performance_monitor.go # 性能监控 │ └── memory_pool.go # 内存池优化 ├── web/ # 前端资源 │ ├── html/ # HTML模板 │ ├── css/ # 样式文件 │ └── js/ # JavaScript ├── server.go # 主服务器入口 ├── build.py # 构建脚本 ├── README.md # 项目说明 ├── Server.md # 服务端部署指南 ├── Cli.md # 客户端使用指南 ├── CHANGELOG_v1.1.0.md # 版本更新说明 └── go.mod # Go依赖 ``` ### 构建输出 ``` dist/ ├── GoSpeedTest # 服务器程序 ├── GoSpeedTest-CLI # 客户端程序 (v1.1.0+) └── GoSpeedTest-CLI.exe # Windows客户端 ``` ### 核心模块说明 | 模块 | 说明 | 关键文件 | |------|------|----------| | **格式化系统** | 统一的测试结果格式化 | `src/utils/format.go` | | **TCP客户端** | 高性能TCP测试客户端 | `src/tcpclient/` | | **TCP服务器** | 高性能TCP测试服务器 | `src/tcpserver/` | | **HTTP服务器** | 基于Gin的Web服务器 | `speed/` | | **内存池** | 4MB缓冲区优化 | `speed/memory_pool.go` | | **性能监控** | 实时性能指标 | `speed/performance_monitor.go` | --- ## 🎯 协议对比 | 特性 | HTTP协议 | TCP协议 | |------|----------|---------| | **兼容性** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | | **性能** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | | **时间模式** | ❌ | ✅ | | **浏览器支持** | ✅ | ❌ | | **推荐场景** | 通用测试 | 高带宽/稳定性测试 | --- ## 🤝 支持与反馈 如果遇到问题或有建议: 1. **查看详细文档:** - 服务端部署 → [Server.md](Server.md) - 客户端使用 → [Cli.md](Cli.md) - 版本说明 → [CHANGELOG_v1.1.0.md](CHANGELOG_v1.1.0.md) 2. **技术文档:** - [⚡ 性能优化详解](PERFORMANCE.md) - [🛠️ 开发文档](dev.md) - [🐳 Docker部署](docker.md) 3. 在Gitee提交Issue --- ## 🙏 致谢 - **[LibreSpeed/speedtest](https://github.com/librespeed/speedtest)** - Web前端界面 - **[Gin](https://github.com/gin-gonic/gin)** - HTTP框架 - **[Zap](https://github.com/uber-go/zap)** - 日志库 ### 项目地址 - **Gitee**: --- **祝您使用愉快!🎉**