我正在研究客户端脚本,并且需要进行繁重的计算,例如在数组中推送大量对象,它会导致JavaScript停止响应并且浏览器挂起并发出警报:

是否有任何最佳实践或设计模式来处理这些计算,我搜索并找到许多不同的方法来处理这些情况,但解决方案很难实现,所以我需要最佳实践并且易于理解?
(我只是编写代码但是我需要一个跨浏览器的通用解决方案,即多线程等)
示例代码(系列包含数千个对象):
for (var series = 0; series < chartObj.masterChart.series.length; series++) {
var detailData = [];
jQuery.each(chartObj.masterChart.series[series].data, function (i, point) {
if (point.x >= chartObj.RangeSelectedMinValue && point.x <= chartObj.RangeSelectedMaxValue) {
detailData.push({
x: point.x,
y: point.y
});
}
});
chartObj.detailChart.series[series].setData(detailData);
}
Run Code Online (Sandbox Code Playgroud) 我的Android应用程序使用了一个特别大的计算,它会使系统崩溃,因为它位于Activity中的UI线程上.我对多线程没什么信心,所以我想得到一些关于如何正确执行的提示.这就是我所拥有的
class ActivtyName extends Activity{
boolean threadcomplete = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//stuff
Runnable newthread = new Runnable(){
@Override
public void run() {
doBigComputation();
threadcomplete=true;
}
};
newthread.run();
boolean b = true;
while(b){
if(threadcomplete){
b=false;
startTheApp();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我很确定我做的不是"正确".(它似乎工作.这个系统不会崩溃).基本上,我不确定如何在没有此布尔值,threadcomplete的情况下告知UI线程newthread已完成计算.有没有"正确"的方法来做到这一点?
我正在尝试开发一个神经网络来预测时间序列.
据我所知,我正在训练我的神经网络训练集并用测试集验证它.
当我对我的结果感到满意时,我可以使用我的神经网络来预测新值,而神经网络本身基本上只是我使用训练集调整的所有权重.
它是否正确?
如果是这样,我应该只训练我的网络一次,然后只使用我的网络(权重)来预测未来的价值.您通常如何避免重新计算整个网络?我是否应该将所有权重保存在数据库或其他内容中,以便我可以随时访问它而无需再次训练?
如果我的理解是正确的,我可以在专用计算机(例如超级计算机)上进行大量计算,然后在网络服务器,iPhone应用程序或类似的东西上使用我的网络,但我不知道如何存储它.
python machine-learning neural-network heavy-computation recurrent-neural-network