我已经用java实现了一个代码,其中有一个for循环,循环次数从0到0x10000次不等。 现在我将此代码导入到 android 中并运行相同的代码。
问题如果: 在 Core 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 次。请提出建议。
最佳答案
也许这可以有所帮助:
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循环的内容以及你在它之后调用的方法......
[编辑]如果您无法访问“key”数组中除了索引 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.
}
}
关于java - 简单的 for 循环在 android 中执行需要时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189532/