我在node.js和此Web服務器上託管的網頁(請參見圖片)中開發了一個Web服務器。 Web服務器被嵌入到樹莓派中,並且我使用了一個帶D/A轉換器的HAT,以便爲外部電路產生電壓。在node.js中改進嵌套for循環的性能
在網頁可以被選擇,如果用戶想要使用一個信道或DAC的兩個聲道。同樣,斜坡生成的參數從0.0到5.0 V(增量)或5.0 V到0.0 V(遞減)。這些設置作爲字符串存儲在使用socket.io傳遞給Web服務器的向量中。
對於選擇兩個通道的具體情況,程序執行如下所示的嵌套循環。其中:
//i= Start Value (DAC0); val_max=Final value (DAC0); forSign="<=" or ">=" ;
//j= Start Value (DAC1); val_max=Final value (DAC1);
//incr = i='i+step' or i='i-step' --> step= Step Value (DAC0)
//incr1 = i='i+step' or i='i-step' --> step= Step Value (DAC1)
for(i; eval(i+forSign+val_max); i=eval(incr)){
for(j; eval(j+forSign+val_max1); j=eval(incr1)){
execSync(com_dac.replace(/dac0/g,j).replace(/dac1/g,i));
spawnSync("sudo",['./ads1256_test', 'adc.txt']);
ADC_read = fs.readFileSync("adc.txt").toString()
}
}
但是,for循環的性能不是最好的。有時會被執行,但有時不會。有什麼建議可以改進將參數傳遞給for循環嗎?考慮到一個帳戶我和Ĵ是值,而步驟,val_max(1)和forSign是字符串變量。我會很感激任何反饋:)
代碼應該做什麼? –
我不會在for循環中使用eval。這將會導致性能下降。 eval函數通常比替代函數慢,因爲它必須調用JS解釋器,而許多其他構造則由現代JS引擎進行優化。 –
請不要使用eval ... – Cristy