2016-06-15 7 views
-1

もっと速いのは不思議です。テキスト(30文字)で作業しているとします。そしてもっと良いテキストがたくさんありますか?int変数を宣言するaux.length =();または、すべてのループでo.length()を使用しますか?

1-

​​

2-

0123:この二つを比較

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// 
} 

また

 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

http://pt.stackoverflow.com/ – Brian

+1

重要な場合は、測定してください。しかし、あなたの何かがまったく些細なものでない限り、ここでは重要ではありません。 –

答えて

0

どちらも優れたアプローチです。

最初の例では、すべてのサイクルでi<a.length()が真であるかどうかを確認しています。これは、すべての反復に対してa.length()を実行することを意味します。変数aが変更されていない場合は不要です。より良い方法は、前に計算してその値を使用することです。

変数aが内部で変更されている場合は、を配置することが正しい方法かもしれません。あなたの問題によって異なります。

2番目の例では、同じ基本です。 else内でa.find(b[i])を再度計算する必要がないため、無駄な計算を避けます。

+1

Muito obrigado:D –

0

大雑把に言えば、計算が大きくなり複雑で頻繁になるにつれて、不要な計算を最小限に抑えることができます。つまり、変数に計算する必要があるものを格納すると、プロセスが高速化される可能性があります。あなたの例の両方で

は、極めて多数のため、

int scratch = big.length(); 

for(int i=0;i<scratch;i++){ 
    //body// 
} 

は、通常は高速です。

このような一般的な質問は、Code Review Stack Exchangeのようなものに属する傾向があります。

+0

オールド・ゴールド、リアル・メイド・エバイター・カルチャー! –

関連する問題