首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-07-15 
如果一个乘数为0,怎样计算省时间?比如ba*0.2548C# codeif(a0)b0elseba*0.2548还是直接C# codeb0.

如果一个乘数为0,怎样计算省时间?
比如b=a*0.2548;

C# code
if(a==0)b=0;elseb=a*0.2548;

还是直接
C# code
b=0.2548

哪个效率高点?我用到很大的矩阵计算,想加快速度

[解决办法]
你说呢,自己断点,看汇编
[解决办法]
一样快。
[解决办法]
如果你真的想优化矩阵计算,并且矩阵大部分都是0,你应该用稀疏矩阵表示这个矩阵。
[解决办法]
探讨
稀疏矩阵是用来存储的,和计算有啥关系?
一个乘法的机器周期和一个if加赋值的执行时间一样快?

[解决办法]
?????

这应该不需要你判定,我觉着你既然都能想到,微软也没理由想不到。他本身就会在*操作去判定两边的操作数滴
[解决办法]
探讨
稀疏矩阵是用来存储的,和计算有啥关系?
一个乘法的机器周期和一个if加赋值的执行时间一样快?

[解决办法]
算个几万次试一下
[解决办法]
某些场合的if语句判断比直接相乘还慢,如果你是在汇编,用jz指令跳转是速度最快的,但是这是在.NET里面,它和0比较不是简单用一个jz指令,是一个复杂的过程,不比直接相乘快。
[解决办法]
可能很少有人研究这个问题,因为意义不大,你要优化的你大型计算,应把重点放在设计和算法上,而不是为了一个0的问题.
如果优化计算模型,性能上可能会提高1倍、10倍,甚至100倍以上,但判断0或不是0的问题即使有提高,也不会达到1倍以上。(而且应当有10%的0,20%...90%为0)

你可试试,计算1亿个数,判断是不是0与直接计算,性能不会有太大的差异。何况要是有70%的都不是0,同样也需要100%的判断是不是0的问题。
[解决办法]
还是直接乘吧
[解决办法]
实践是检验真理的唯一标准
计算两者使用的时间,比较一下就行了
[解决办法]
差别可以忽略
[解决办法]
例如接方程组时不时去求矩阵的你矩阵 --> 例如解方程组时不是先去计算矩阵的逆矩阵

算法变了,效率可以得到大规模提高。而具体的语句,则反而应该以简单为根本。
[解决办法]
很大的矩阵计算,想加快速度,这才是lz 想问的吧,楼上建议s可行





[解决办法]
实践是检验真理的唯一标准

热点排行