如果一个乘数为0,怎样计算省时间?

upc_xiaowei 2012-05-02 10:10:40
比如b=a*0.2548;

if(a==0)
b=0;
else
b=a*0.2548;

还是直接
b=0.2548

哪个效率高点?我用到很大的矩阵计算,想加快速度
...全文
364 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
槑党--一缕风 2012-05-03
  • 打赏
  • 举报
回复
实践是检验真理的唯一标准
startstartsvip 2012-05-03
  • 打赏
  • 举报
回复
很大的矩阵计算,想加快速度,这才是lz 想问的吧,楼上建议s可行




  • 打赏
  • 举报
回复
例如接方程组时不时去求矩阵的你矩阵 --> 例如解方程组时不是先去计算矩阵的逆矩阵

算法变了,效率可以得到大规模提高。而具体的语句,则反而应该以简单为根本。
  • 打赏
  • 举报
回复
自己测试一下。没有必要“规定”应该用哪一个。

改变不同的算法,可以大规模地改变运算效率,例如可以使得 3*^3 的计算时间变为 6*x^2 的运算时间。例如接方程组时不时去求矩阵的你矩阵,而是将矩阵进行三角分解(下三角矩阵与上三角矩阵)来迭代求解,这就是在算法上去改进,而不是把精力放在个别语句上。
兔子-顾问 2012-05-03
  • 打赏
  • 举报
回复
差别可以忽略
完美算法 2012-05-03
  • 打赏
  • 举报
回复
实践是检验真理的唯一标准
计算两者使用的时间,比较一下就行了
Lactoferrin 2012-05-02
  • 打赏
  • 举报
回复
算个几万次试一下
threenewbee 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
稀疏矩阵是用来存储的,和计算有啥关系?
一个乘法的机器周期和一个if加赋值的执行时间一样快?
[/Quote]
关系在于,你显然可以直接忽略掉大部分0
upc_xiaowei 2012-05-02
  • 打赏
  • 举报
回复
有这么智能?微软的会自己判断0是否是乘数?
upc_xiaowei 2012-05-02
  • 打赏
  • 举报
回复

double temp;
if(temp==0)
{
}
else
{
for(int i=0;i<a.getlength(0);i++)
a[i]=a[i}*temp;
}

按照你们的意思?如果不考虑for循环耗时的话,这个if是不是不加也行呢?
wanghui0380 2012-05-02
  • 打赏
  • 举报
回复
?????

这应该不需要你判定,我觉着你既然都能想到,微软也没理由想不到。他本身就会在*操作去判定两边的操作数滴
cheng2005 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
稀疏矩阵是用来存储的,和计算有啥关系?
一个乘法的机器周期和一个if加赋值的执行时间一样快?
[/Quote]
乘0的话我坚信会在底层有优化,不然弱爆了。
upc_xiaowei 2012-05-02
  • 打赏
  • 举报
回复
稀疏矩阵是用来存储的,和计算有啥关系?
一个乘法的机器周期和一个if加赋值的执行时间一样快?
threenewbee 2012-05-02
  • 打赏
  • 举报
回复
如果你真的想优化矩阵计算,并且矩阵大部分都是0,你应该用稀疏矩阵表示这个矩阵。
threenewbee 2012-05-02
  • 打赏
  • 举报
回复
一样快。
bdmh 2012-05-02
  • 打赏
  • 举报
回复
你说呢,自己断点,看汇编
upc_xiaowei 2012-05-02
  • 打赏
  • 举报
回复
输错了,是b=a*0.2548
烈火蜓蜻 2012-05-02
  • 打赏
  • 举报
回复
还是直接乘吧
ycg_893 2012-05-02
  • 打赏
  • 举报
回复
可能很少有人研究这个问题,因为意义不大,你要优化的你大型计算,应把重点放在设计和算法上,而不是为了一个0的问题.
如果优化计算模型,性能上可能会提高1倍、10倍,甚至100倍以上,但判断0或不是0的问题即使有提高,也不会达到1倍以上。(而且应当有10%的0,20%...90%为0)

你可试试,计算1亿个数,判断是不是0与直接计算,性能不会有太大的差异。何况要是有70%的都不是0,同样也需要100%的判断是不是0的问题。
upc_xiaowei 2012-05-02
  • 打赏
  • 举报
回复
到底怎么算才能节省时间?
加载更多回复(1)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧