/api/compilers 为 C 语言的 12.6MB,其中 84% 可能重复的可能覆盖

作者: partouf创建于 2026年8月21日更新于 2026年8月21日
标签enhancement

□ 总结

与字段相连接的“ GET / api/ compilers/c” 设置前端请求返回 1038 个编译器的 JSON 的 #12.6 MB**(13,243,930字节) 。 ** 其中84%是`可能的控制权',几乎所有数据都是重复的。

这值得根据其自身的优点来决定,但它在野外也有具体的失败模式——见下文"为什么这很重要".

□ 数字

根据生产量衡量(https://godbolt.org',2026-08-21),准确使用现场清单CompillersService.compiller Felds'发送:

====================================================================================================== (========================================================================== |.

  • `可能的管辖 ' = 11,144,108 * **84.1 * * * " 可能的运行时间工具 " = 541 944 = 4.1% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ " 许可证 " :236 195 : 1.8% " 工具 " 150 459个 其他一切 ~0.9 MB ~ 6.9% ~
  • 共计********

现在重复。 在所有1038个编译器中,有1234个被覆盖的对象,但只有70个不同的对象,共计200,656字节. 唯一最坏的罪犯:

QQ"类型":"选项","名称":"工具链","Display title":"工具链","值":[.640个条目.] —**63,380字节,字节同同,重复到149个编译器上=9.44 MB,即占整个响应的71%. **.

这个来源于Get Possible Toolchains ()' (lib/base-compiler.ts:4315),它代表了这个.env.get Possible Toolchains ()'——一个全环境的清单。 每一个编译器都一样 我们运送149份

arch'是规模较小的同一种说法(~5 KB × 121个值,每个编译器在一组中重复);stdver'出现在937个编译器上。

粗天花板:

  • 拆卸整个`可能的重叠'阵列(80个不同的值):12.6 MB → ~4.3 MB
  • 破除单个覆盖对象(70个不同):12.6 MB → ~2.3 MB(一个**82 + 切)

∮为什么这很重要∮

除了明显的(带宽,剖析时间,移动上的内存)之外,我们还有一个哨兵事件,这个大小使得:

语法错误:JSON.parse:在对象中的属性名称后需要“:”
JSON数据第1441-800行
哨兵能力上下文:获取编译器ForLang(c)
获取/api/编译器/c?fields=. & hash=. [200].

对事件的分析:

  • ** 不是服务器错误。 ** " 输出列表 " (lib/handlers/api.ts:228)是一个单一同步的res.send(array)'-JSON.stringify'。 没有任何东西可以互通。 Prod确认:ETag W/'ca161a-.'(0xca161a' = 13,243,930 = 准确的体长),25个连续取回的同字节相同且严格有效的取回(无NaN'/Infinity',紧凑的回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回的回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回的回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回
  • ** 不截断。 ** SpiderMonkey在 " . " 一栏中将 " 数据在财产名称后区分为 " : " 和 " 预期 " 。 我们得到了第二个,它只当有"有一个角色在那里,它不是":"。 于是尸体到达了完全外观,中间是垃圾.
  • ** 乘数为账面数字。 ** 第1441 800栏=0 腐败是7字节超过64个KiB边界—— . . . . . . .

内容来源: compiler-explorer/compiler-explorer