我制作了大小为[100][20][100][3]
的数组var QL = [[],[],[],[]];
,每次我的程序完成时,当我的程序再次启动时,我需要保存数组如果文件存在,则只需加载。
1-怎么这么快(我的代码在下面,但非常慢!)?
2 -如何快速加载
QLearn.QLSave = function (){
var jsonQtable = [];
for (var a=0; a<100; a++) {
for (var b=0; b<20; b++) {
for (var c=0; c<100; c++){
for (var d=0; d<2; d++){
jsonQtable.push(QL[a,b,c,d].toJSON)
}
}
}
}
QLearn.ui.logger.log('Saving QL...');
var dir = './Qtable';
var fileName = dir + '/QL'+'.json';
fs.writeFile(fileName, JSON.stringify(jsonQtable), function (err){
if (err) {
QLearn.ui.logger.log('Failed to save! '+err);
} else {
QLearn.ui.logger.log('Saved to '+fileName);
}
});}
您可以批量编写文件,解决方案是在每次迭代中添加文件,使用fs.appendFile:
QLearn.QLSave = function (){
var jsonQtable = [];
for (var a=0; a<100; a++) {
for (var b=0; b<20; b++) {
for (var c=0; c<100; c++){
for (var d=0; d<2; d++){
fs.appendFile(fileName, QL[a,b,c,d].toJSON, function (err) {
if (!err){
console.log("Success in insert: " + QL[a,b,c,d].toJSON);
}
});
}
}
}
}