100解决方法
100
for(...)
{
if(par > = n)
{
par=par%n;
}
if(array[par])
{
if(array[par]
{
.....
}
}
}
----------------------------------------------
for(...)
{
if(array[par%n])
{
if(array[par%n]
{
.....
}
}
}
//////////////////////////////////////////////
上述两段代码第一种情况减少了求余次数,肯定是比第二段代码快,但是如果程序中使用第一种情况,整体程序会比使用第二种的快4倍,请问为什么会有这么大的差别呢??谢谢
------解决方案--------------------
唉,智商有限
愣是没看懂两种方法是啥
惭愧
------解决方案--------------------
还要看编译器的优化程度
无法精确比较 没什么意义
------解决方案--------------------
具体快多少倍还要看看具体机器或者编译器,没有必要写成第2种情况那样,
也感觉这个问题意义不大。
------解决方案--------------------
up
------解决方案--------------------
...
------解决方案--------------------
mark
------解决方案--------------------
if(par > = n)
{
par=par%n;
}
4倍?
不明白。。。。
------解决方案--------------------
嘛意思?
------解决方案--------------------
强
------解决方案--------------------
第二个执行了两次求余运算,第一个有可能只做比较判断
for(...)
{
if(par > = n)
{
par=par%n;
}
if(array[par])
{
if(array[par]
{
.....
}
}
}
----------------------------------------------
for(...)
{
if(array[par%n])
{
if(array[par%n]
{
.....
}
}
}
//////////////////////////////////////////////
上述两段代码第一种情况减少了求余次数,肯定是比第二段代码快,但是如果程序中使用第一种情况,整体程序会比使用第二种的快4倍,请问为什么会有这么大的差别呢??谢谢
------解决方案--------------------
唉,智商有限
愣是没看懂两种方法是啥
惭愧
------解决方案--------------------
还要看编译器的优化程度
无法精确比较 没什么意义
------解决方案--------------------
具体快多少倍还要看看具体机器或者编译器,没有必要写成第2种情况那样,
也感觉这个问题意义不大。
------解决方案--------------------
up
------解决方案--------------------
...
------解决方案--------------------
mark
------解决方案--------------------
if(par > = n)
{
par=par%n;
}
4倍?
不明白。。。。
------解决方案--------------------
嘛意思?
------解决方案--------------------
强
------解决方案--------------------
第二个执行了两次求余运算,第一个有可能只做比较判断