1

0 から 0x10000 回まで変化する for ループを持つ Java のコードを実装しました。今、私はこのコードを Android にインポートし、同じコードを実行しています。

その場合の問題: コア Java ループでは、最大 2 秒で実行されます。しかし、Androidで同じループが実行されている場合、4分かかります(嫌です)

誰かがこれから私を助けてくれませんか、あなたの理解のために私のループを貼り付けています:

   for (int r = 0; r < 0x10000; r++) {
            for (int j = 0; j < password.length; j += 4) {
                long[] key = {0, 0, 0, 0};
                for (int i = 0; i < 4; i++) {
                    if (i + j < password.length) {
                       //do something
                    }
                }
                //calling one method.
            }

        }

基本的にメインループは最大64000回変化します。提案してください。

4

2 に答える 2

0

これは少し役立つかもしれません:

int maxR = 0x10000;
int passwordLength = password.length;
for (int r = 0; r < maxR; r++) {
    for (int j = 0; j < passwordLength; j += 4) {
        long[] key = {0, 0, 0, 0};
        for (int i = 0; i < 4; i++) {
            if (i + j < passwordLength) {
               //do something
            }
        }
        //calling one method.
    }
}

しかし、最適化するのは、おそらく最後の for ループの内容と、その後に呼び出すメソッドだと思います...

[編集]インデックス i 以外の「キー」配列の他の項目にアクセスしない場合は、Joop Eggen が提案したことを行うことができます。

int maxR = 0x10000;
int passwordLength = password.length;
long[] key = {0, 0, 0, 0};
for (int r = 0; r < maxR; r++) {
    for (int j = 0; j < passwordLength; j += 4) {
        for (int i = 0; i < 4; i++) {
            key[i] = 0;
            if (i + j < passwordLength) {
               //do something
            }
        }
        //calling one method.
    }
}
于 2013-06-19T11:12:16.393 に答える