儘管我已經回顧了以前的幾篇文章,但我的菜鳥功能對於加速執行以下代碼的解決方案是盲目的。有數百個k,並且每個k有(數萬)個我,nearSum()有一個評估testStr的循環。加速JavaScript運行時間
此代碼很慢並且超時Chrome - 我如何改進執行? 在你問之前,任何代碼的唯一原因是'因爲它正在工作'。 nn的值是全局變量。
Function()…
resArrLen = resultArray[k].length;
for (i=0;i<resArrLen;i++)
{
testStr = resultArray[k][i].toString();
resultArray[k][i] = testStr + "'" + nearSum(testStr);
}//end for i
…
function nearSum(seqFrag)
{
var i=0;
var ninj=0;
var seqFragLen=0;
var calcVal=0;
var nn="";
//sum values
seqFragLen = seqFrag.length;
for (i=0; i+1<seqFragLen; i++)
{
nn = seqFrag.substr(i,2); //gets value
ninj = eval(nn);
calcVal = calcVal.valueOf() + ninj.valueOf();
} //end for i
return calcVal.toFixed(2);
} //end nearSum
任何數據示例與此?沒有一些數據很難看到任何優化方法。 –
'resultArray'包含什麼,爲什麼將它轉換爲字符串,然後在其中的一部分使用'eval'?除非有一些非常具體的原因需要這樣做,否則效率很低。 – Guffa
作爲一個社區,我們不能對你的帖子做太多的事情。目前還不清楚數據的構成。雖然你提供了一些數據的數量指標,但是一個樣本實際上是需要的。結果是,爲了回答這個問題,每個回答者都必須編寫他們自己的數據集,嘗試將它與您顯示的代碼進行匹配,然後嘗試重現所述的速度問題。這個過程浪費了時間。發帖時請儘量考慮其他用戶,以便他們可以回答。這可以通過一小段示例數據來解決,這些數據顯示了這些代碼如何交互。 –