1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| console.log('================app start!==============='); var readLine = require('lei-stream').readLine;
// 一个几百M的文本文件 var inputFile = './logs/money_change_2016-03-30.log';
var counter = 0; var startTime = Date.now();
function msToS (v) { return parseInt(v / 1000, 10); }
function getSpentTime () { return Date.now() - startTime; }
var result = []; readLine(inputFile).go(function (data, next) { counter++; //这里只是用来测试查找结果中有『Peterson Eileen, 』和『 ,1,』的结果并输出 if( data.indexOf('Peterson Eileen,')>=0 && data.indexOf(',1,')>=0 ){ result.push(data); } if (counter % 100000 === 0) { printSpeedInfo(); } next(); }, function () { console.log('result length :%s', result.length) console.log('done. total %s lines, spent %sMS', counter, getSpentTime()); printMemoryUsage(); process.exit(); });
// 打印进度 function printSpeedInfo () { var t = getSpentTime(); var s = counter / msToS(t); if (!isFinite(s)) s = counter; console.log('read %s lines, speed: %sL/S, spent: %sms', counter, s.toFixed(0), t.toFixed(0)); }
// 打印内存占用情况 function printMemoryUsage () { var info = process.memoryUsage(); function mb (v) { return (v / 1024 / 1024).toFixed(2) + 'MB'; } console.log('rss=%s, heapTotal=%s, heapUsed=%s', mb(info.rss), mb(info.heapTotal), mb(info.heapUsed)); } setInterval(printMemoryUsage, 1000); [/code] [code lang="bash"] ================app start!=============== rss=69.02MB, heapTotal=48.11MB, heapUsed=12.54MB rss=72.51MB, heapTotal=50.08MB, heapUsed=17.19MB rss=72.58MB, heapTotal=50.08MB, heapUsed=16.55MB result length :804 done. total 2529786 lines, spent 3307MS rss=72.59MB, heapTotal=50.08MB, heapUsed=19.78MB
|