我想知道哪个更快:说我正在处理一些文字(30个字符),这会更好吗?并且有很多文本哪个更好?
1 -
int tam = text.length();
for(int i=0;i<tam;i++)
{
//something here//
}
2 -
for(int i=0;i<a.length();i++)
{
//something here//
}
并比较这两个:
1 -
for (int i = 0; i < b.length(); i++)
{
aux = a.find(b[i]);
if (aux == -1)
{
sucess = 0;
break;
}
else
{
a.erase(aux,1);
}
}
2 -
for (int i = 0; i < b.length(); i++)
{
if (a.find(b[i]) == -1)
{
sucess = 0;
break;
}
else
{
a.erase(a.find(b[i]),1);
}
}
答案 0 :(得分:0)
作为一般经验法则,随着计算变得更大,更复杂,更频繁,您希望最大限度地减少不必要的计算。这意味着存储需要在变量中计算的内容可以加快该过程。
在两个示例中,对于极大数字
int scratch = big.length();
for(int i=0;i<scratch;i++){
//body//
}
通常更快。
将来,像这样的一般性问题往往属于Code Review Stack Exchange。
答案 1 :(得分:0)
首先是更好的方法。
在第一个示例中,您要检查每个周期是否i<a.length()
为真。这意味着您将在每次迭代时执行a.length()
。如果变量a
没有改变,则没有必要,更好的方法是先计算并使用该值。
请注意,如果在内部更改变量a
,则放置i<a.length()
可能是正确的方法。这取决于你的问题。
在第二个例子中,它是相同的基础。您可以避免无用的计算,因为您不需要在else中再次计算a.find(b[i])
。