两端代码基本上一样的,绝大多数运行开销都在 rand和printf上,而不是变量赋值。
第一段运行后,大部分代码指令都进入了CPU的指令缓存,导致第二段执行变快率(猜测)
验证也很简单,把两段代码换个顺序再试试看。
先给你个结论:你那两种写法,稍微正常点的编译器开了优化,都会生成一样的代码的。
你的测试代码的问题在于:
1:循环体内一句赋值再来一句printf,本质上测的是printf的速度。
2:如果不加那句printf,你的循环应该会直接被优化掉。
3:这种那么简单的代码没必要跑来测(也很难测得准)。最好的办法是反汇编之后直接看生成的指令。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有