社区
汇编语言
帖子详情
if(!n) ,if(n),和if(x==n) 哪个速度更快 为什么
marsmjx
2009-01-07 11:19:51
if(!n) ,if(n),和if(x==n)哪个速度更快 为什么 具体有多大差距
如果有
for(i=0;i<70000;i++)
{
if(...)
}
三种情况差距大吗 具体能差多少个count
...全文
250
14
打赏
收藏
if(!n) ,if(n),和if(x==n) 哪个速度更快 为什么
if(!n) ,if(n),和if(x==n)哪个速度更快 为什么 具体有多大差距 如果有 for(i=0;i<70000;i++) { if(...) } 三种情况差距大吗 具体能差多少个count
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cnzdgs
2009-01-11
打赏
举报
回复
编译优化化,在目前的CPU上,如果单看这一行代码,三种都一样快,如果n是前面运算的结果,则if(x==n)比另两种要慢一点。
土豆
2009-01-11
打赏
举报
回复
[Quote=引用 2 楼 gooogleman 的回复:]
引用楼主 shiyiytt 的帖子:
if(!n) ,if(n),和if(x==n)哪个速度更快 为什么 具体有多大差距
如果有
for(i=0;i <70000;i++)
{
if(...)
}
三种情况差距大吗 具体能差多少个count
这个我没有注意,只是在林锐的书里
提倡if(!n) ,if(n),不提倡if(n=1)的写法,
[/Quote]
从CPU乱序执行和分支预测来说,上面三个比较语句谁的命中率高谁的效率就会更高。在你的例子中,if(n)应该效率最高,导致最少流水线预取失败;而if(!n)和if(x==n)的效率是一样的,都是只有一次流水线的预取成功。
这问题意义不大,其实编译器都能替你优化。如果你如此关心效率,那就应该用汇编。作为C/C++程序员,我觉得应该关注更高效的算法(不是指你这种,比如是什么情况下用hash table,什么情况下用数组),更规范更简洁易懂的代码。如果一定要关心一个实现方面的问题,那处理好指针的问题,少点内存泄漏吧。
林锐这么说,大概也是因为他当时钻牛角尖了,站的角度不是那么开阔。
fjwyshan
2009-01-11
打赏
举报
回复
不懂,帮顶
noenoughmemory
2009-01-11
打赏
举报
回复
不懂,帮顶
noenoughmemory
2009-01-11
打赏
举报
回复
mark
xiangongda
2009-01-10
打赏
举报
回复
前两个 or 指令
后一个 cmp
你说那个快?
psic__
2009-01-10
打赏
举报
回复
都一样快啊……
zwjchina
2009-01-10
打赏
举报
回复
if(!n) ,if(n),if(x==n)
逻辑意义都不一样,还比较啥
要比也是:
if(!n), if(n) 和 if(n==0), if(n!=0)
zheng1xi
2009-01-08
打赏
举报
回复
前两种会快很多~
因为后者多一个数值上判断的过程
xiaopoy
2009-01-07
打赏
举报
回复
当然if(n)最快.
gooogleman
2009-01-07
打赏
举报
回复
有空可以反汇编一下。
gooogleman
2009-01-07
打赏
举报
回复
[Quote=引用楼主 shiyiytt 的帖子:]
if(!n) ,if(n),和if(x==n)哪个速度更快 为什么 具体有多大差距
如果有
for(i=0;i <70000;i++)
{
if(...)
}
三种情况差距大吗 具体能差多少个count
[/Quote]
这个我没有注意,只是在林锐的书里
提倡if(!n) ,if(n),不提倡if(n=1)的写法,
shoooo
2009-01-07
打赏
举报
回复
有区别的
google "CPU 分支预测"
if语句和三元运算符哪个效率更高
探讨了三元运算符如何在CPU层面提高程序执行效率,对比if...else...语句,解释了三元运算符如何减少CPU预测错误,从而提升整体性能。
Pow(x, n)
本文探讨了如何优化 pow(x, n) 函数的时间复杂度,从 O(n) 级别提升至 O(logn),通过递归方式实现了
更快
的计算
速度
。
LeetCode Pow(x, n)
本文介绍了一种高效计算x的n次幂的方法——快速幂算法。该算法通过将指数n拆分为二进制形式,利用位操作减少乘法次数,从而实现
更快
的计算
速度
。文章还提供了Python代码示例,展示了如何处理正负指数的情况。
Teradata 之top n与sample n
本文介绍了Teradata中获取样本数据的两种方式:TOP N和SAMPLE N。TOP N在有Order By时需先排序,无Order By时涉及全AMP收集;SAMPLE N则进行全表扫描并采取 Sampling 方法。性能上,小数据量时TOP N
更快
,大数据量时SAMPLE N
更快
。通过两个查询解释展示了它们在执行计划上的差异。
N皇后三种解法
本文详细介绍了N皇后问题的三种解决方案:深度优先搜索(DFS)、全排列以及全排列结合剪枝。针对DFS的时间复杂度问题,通过剪枝策略显著提高了算法效率。每种方法的实现和性能比较都在代码中得以展示,剪枝后的DFS算法在解决N皇后问题时表现出
更快
的
速度
。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章