尽可能快地执行代码

我正在使用node.js和我的WebStorm IDE来parsing一个大的JSON文件(〜500兆字节)。 这是我的代码:

fs = require("fs"); fs.readFile('C:/Users/.../Documents/AAPL.json', 'utf8', function (err,data) { for (i = 0; i < 1000; i++) { var hex = JSON.parse(data)[i]._source.layers.data["data.data"]; var askPrice = parseInt(hex.substring(215, 239).split(":").reverse().join(""),16); var bidPrice = parseInt(hex.substring(192, 215).split(":").reverse().join(""),16); var symbol = hex.substring(156, 179); var timestamp = hex.substring(132, 155); var askSize = hex.substring(240, 251); var bidSize = hex.substring(180, 191); var price = String((+bidPrice+askPrice)/2); var realprice = price.slice(0, price.length - 4) + "." + price.slice(price.length - 4); function hex2a(hexx) { var hex = hexx.toString(); var str = ''; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; } if(JSON.parse(data)[i]._source.layers.data["data.len"] == 84 && realprice.length == 8 && +realprice <154 && +realprice >145) { console.log(i + " " + hex2a(symbol.replace(/:/g, "")) + " sold for " + realprice + " at " + parseInt(timestamp.split(":").reverse().join(""), 16)); } } }); 

但是我遇到的问题是我的IDE以极低的速度parsing这个文件,大概每秒迭代一次。 我不认为这是因为我有一个很慢的电脑,因为我有一个核心i7 7700k和gtx 1070的高端钻机。我试着在控制台执行代码,结果相同。 我试着修改代码,然后再次达到相同的速度:

  fs = require("fs"); fs.readFile('C:/Users/Brandt Winkler Prins/Documents/AAPL.json', 'utf8', function (err,data) { for (i = 0; i < 12000; i++) { var hex = JSON.parse(data)[i]._source.layers.data["data.data"]; var askPrice = parseInt(hex.substring(215, 239).split(":").reverse().join(""),16); var bidPrice = parseInt(hex.substring(192, 215).split(":").reverse().join(""),16); var price = String((+bidPrice+askPrice)/2); var realprice = price.slice(0, price.length - 4) + "." + price.slice(price.length - 4); if(+realprice <154 && +realprice >145) { console.log(realprice); } } }); 

我应该如何执行我的代码以尽可能快地获取我的数据?

你每次迭代运行JSON.parse(data) ,这可能需要相当一段时间的500MB json文件。

解决方法是将其移出循环并重新使用parsing的对象:

 var obj = JSON.parse(data); for (...