You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手写FASM字符串长度函数比GCC编译版本慢1.5倍的原因排查

x64 Windows平台手写FASM strlen函数性能慢于GCC编译版本的排查思路求助

我用FASM编写了x64(Windows ABI)平台下的字符串长度函数,逻辑如下:

  • 先检查输入字符串是否8字节对齐
  • 未对齐则逐个检查前几个字符,直到将指针对齐至8字节边界
  • 之后以8字节为批量单位检查字符串结束符

但测试发现,该手写汇编函数比GCC编译的同逻辑C版本慢1.5倍:测试环境为i7-7800X,针对长度336的字符串执行1000万次循环,手写版本耗时0.772s,GCC版本耗时0.522s。我已将跳转标签对齐至16字节,仍无法定位性能差异原因,寻求问题排查思路。

手写FASM代码

; 此处粘贴手写FASM代码

GCC生成的汇编代码

; 此处粘贴GCC生成的汇编代码

C实现代码

// 此处粘贴C版本实现代码

测试程序

// 此处粘贴测试程序代码

内容的提问来源于stack exchange,提问作者HelloGUI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:20:07