gpt4 book ai didi

javascript - JavaScript 中循环的性能问题

转载 作者:行者123 更新时间:2023-12-02 23:30:05 24 4
gpt4 key购买 nike

我的 JavaScript 代码遇到了巨大的性能问题。我尝试在 OPL 中预处理 Cplex-Model 的数据,代码是用 JavaScript 编写的。

我已经尝试通过添加第一个 if 子句来加快速度 (if A[1][3]="", A[1][k] ="" 对于每个 k > 3) ,但我的计算机仍然需要 2 个多小时来处理这段代码...

Jnr = 1000,
Mnr = 35;
while (j <= Jnr) {
while (i <= Mnr) {
while (k <= Mnr) {
if (A[j][k] == "") {
break;
} else if (A[j][k] == I[i].name) {
counter[j][i] = counter[j][i] + 1;
}
k = k + 1;
}
k = 1;
i = i + 1;
}
i = 1;
j = j + 1;
}
j = 1;

有什么办法可以加快这个过程吗?

感谢您的帮助

最佳答案

对大循环使用脚本并不是一个好主意。如果直接在 OPL 中编写,速度会快得多:

int Jnr = 1000;
int Mnr = 35;

tuple t
{
string name;
}

t I[i in 1..Mnr]=<"A">;

string A[i in 1..Jnr][j in 1..Mnr]=((i+j)%2==0)?"A":"B";
int counter[1..Jnr][1..Mnr];

execute
{
var i=1;
var j=1;
var k=1;

while (j <= Jnr) {
while (i <= Mnr) {
while (k <= Mnr) {
if (A[j][k] == "") {
break;
} else if (A[j][k] == I[i].name) {
counter[j][i] = counter[j][i] + 1;
}
k = k + 1;
}
k = 1;
i = i + 1;
}
i = 1;
j = j + 1;
}
j = 1;
}


int counter2[i in 1..Jnr][j in 1..Mnr]=sum(k in 1..Mnr) (I[k].name==A[i][k]);

execute
{
counter2;
}


assert forall(i in 1..Jnr,j in 1..Mnr) counter[i][j]==counter2[i][j];

counter 在我的机器上需要 9 秒,而 counter2 需要 0.3 秒

关于javascript - JavaScript 中循环的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com