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

go swagger慢

几个可能导致 swagger 生成很慢的原因:

主要原因分析

1.--parseDependency选项导致全依赖解析

当前swag init命令使用了--parseDependency参数:

bash

swag init --parseDependency --instanceName swagger -g .\main.go -d .\

这个选项会递归解析所有依赖包的注释,包括:

  • 项目内部依赖(如beapi
  • 外部第三方库(如gingorm等)
  • 所有间接依赖(共 260+ 个包)

这会导致大量不必要的文件扫描,严重影响性能。

2.docs.go 文件过大

从读取的文件内容看,docs.go被截断(超过 40KB),说明项目包含大量 API 端点,解析和生成时间自然会很长。

3.解析范围过宽

当前-d .\参数表示解析当前目录下所有文件,但项目结构复杂:

plainText

beweb/ ├── webctl/ # 多个控制器 ├── setupweb/ # 配置 ├── docs/ # swagger 文档 └── ...

4.swag 版本较旧

项目使用的是github.com/swaggo/swag v1.16.4,较新版本可能有性能优化。


优化方案

方案一:移除--parseDependency(推荐)

修改swagini.bat

batch

rem 移除 --parseDependency 选项 swag init --instanceName swagger -g .\main.go -d .\

效果:只解析当前项目的注释,跳过所有依赖包,性能提升显著。

方案二:限制解析目录

batch

swag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb

效果:只解析必要的目录,减少扫描范围。

方案三:参考 beopc 项目的优化配置

beopc 项目已经做了优化:

batch

swag init --parseDependency -g .\main.go --exclude "webplat,webbiz,controller"

方案四:升级 swag 版本

bash

go get github.com/swaggo/swag@latest

建议的最终优化

修改E:\soft\gotrain\beweb\swagini.bat

batch

@echo off rem 优化后的 swagger 生成命令 rem 1. 移除 --parseDependency 避免解析外部依赖 rem 2. 明确指定需要解析的目录 swag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb cd ..

优化效果预估

优化项预期效果
移除--parseDependency性能提升 80%+,避免解析数百个依赖包
限制解析目录减少 30-50% 的扫描文件数
升级 swag额外 10-20% 性能提升

如果需要保留依赖解析功能(例如某些响应类型定义在依赖包中),可以使用--parseInternal替代--parseDependency,只解析内部包而不解析外部第三方库。

http://www.jsqmd.com/news/917699/

相关文章:

  • 如何通过APKMirror安全获取安卓应用?这款开源客户端为你提供官方商店外的可靠选择
  • 2026年石家庄GEO优化权威排名:调研AI核心数据于深度解析指南优化避坑指南 - 资讯纵览
  • 2018技术趋势盘点:AI伦理、数据隐私与平台治理的反思与应对
  • 前端性能优化:打包优化策略完全指南
  • OBS-Multi-RTMP:一键开启多平台直播推流的终极解决方案
  • 用Python的Pulp库搞定NDDF模型:一个环境经济学研究生的效率测算实战笔记
  • 如何用ZonyLrcToolsX一键解决音乐库的歌词缺失难题:3步完成智能匹配
  • beweb目录结构审视
  • APKMirror:你的安卓应用安全下载管家,告别官方商店的三大痛点
  • Inkscape光线追踪扩展终极指南:5分钟创建专业光学图表
  • 如何用AntiDupl.NET免费开源工具智能清理重复图片:完整指南
  • 2026年锡林浩特哪些电器门店值得放心?看这份TOP5榜单
  • Arduino节奏训练器:状态机与时间精度在嵌入式交互中的实践
  • 从关节点动到笛卡尔空间:手把手教你用Codesys实现SCARA机器人两种点动模式切换
  • 终极免费视频下载助手:VideoDownloadHelper Chrome插件完全指南
  • 告别手动水印烦恼:智能相机参数批量添加工具解放摄影后期
  • 2026年工厂获客难的隐形破局:靠谱GEO优化公司怎么选 - 奔跑123
  • NX二次开发避坑实录:多线程调用UF函数时,为什么我的程序总崩溃?
  • 上海哪个区注册公司最划算 - 资讯纵览
  • 你家附近有没有靠谱的腕表养护门店?亨得利本地官方服务中心全公开:9城直达、明码标价、原厂配件,400电话一键预约 - 亨得利腕表维修中心
  • 基于Arduino的水位传感器与伺服电机实现宠物自动饮水系统
  • 好用的随身 wifi 推荐性价比高,2026场景机型实测,日常上网首选 - 资讯纵览
  • 【五分钟完成】Windows 本地部署 Hermes 一键快速搭建教程(包含安装包)
  • 从零到上线:我的.NET 6电商项目如何集成微信扫码支付(Furion框架 + 盛派SDK实战)
  • 基于PIC16F84A的11路LED流水灯:从电路设计到代码实现的完整实践
  • 多格式文件解析:JSONL / SQLite / Event Stream
  • Arduino与BMP180气压传感器:从硬件连接到海拔计算的完整指南
  • 2026年沈阳热熔标线施工厂家多维梳理 适配各类工程场景需求 - 兔兔不是荼荼
  • 2026年泸州白酒OEM定制代工全景拆解:源头酒厂如何为B端客户构建专属供应链 - 优质企业观察收录
  • 随身wifi哪种好推荐一下,2026高口碑品牌实测零风险 - 资讯纵览