2017-04-14 137 views
0

我一直在JS上構建一個在Intel XDK上的cordova應用程序。它每隔幾毫秒調用一次使用setInterval的函數。Intel XDK Slow APK

當我在仿真或Chrome上播放我的應用程序時,它的工作非常流暢。沒有任何問題。但是,當我將應用程序構建到Android手機(Galaxy S7)上時,速度大約是4倍。

是否有一個原因爲什麼它是如此緩慢的移動,但不是在PC上?可以預防嗎?提前致謝!

var func = function() { 
// code code code 
} 
setInterval(func,1); 

在桌面上,這將觸發大約每4毫秒,而在移動大約需要20-30毫秒,超經常變化。

回答

1

您假定所有JavaScript運行時和處理器都是相等的。不幸的是,事實並非如此。您的移動設備的計算資源遠不如您的筆記本電腦;筆記本電腦/臺式機的運行時間有更多的可用資源,例如更快,更強大的處理器,更多的RAM等。同樣,移動設備中的JavaScript運行時正在運行一個針對電池效率進行了優化的JavaScript運行時間,並且與在筆記本電腦/臺式機上運行的性能優化運行時相比,資源減少,可以感受到幾乎無限的資源。即使Android版本中的差異也會產生影響,特別是如果您將Android 4.x設備中的JavaScript運行時與新版設備進行比較。

沒有規則說JavaScript事件循環能夠在所有實現中處理4毫秒,所以你不能假設你在平臺A上測量的性能在平臺B上是可重現的。平臺以及影響結果的限制和設計目標的真正差異。

這個頁面有一些問題,可能出現>https://javascript.info/settimeout-setinterval#summary <一個很好的描述,這個演示可以瞭解更多關於JavaScript事件循環幫助>http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html <

當您運行在英特爾XDK您的應用程序模擬您在桌面Chromium瀏覽器中運行的選項卡。它不是模擬硬件,它只是在你的代碼中調試邏輯非常方便,僅此而已。