| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | |
| return new (P || (P = Promise))(function (resolve, reject) { | |
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | |
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | |
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | |
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | |
| }); | |
| }; | |
| var __generator = (this && this.__generator) || function (thisArg, body) { | |
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | |
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | |
| function verb(n) { return function (v) { return step([n, v]); }; } | |
| function step(op) { | |
| if (f) throw new TypeError("Generator is already executing."); | |
| while (_) try { | |
| if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; | |
| if (y = 0, t) op = [0, t.value]; | |
| switch (op[0]) { | |
| case 0: case 1: t = op; break; | |
| case 4: _.label++; return { value: op[1], done: false }; | |
| case 5: _.label++; y = op[1]; op = [0]; continue; | |
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | |
| default: | |
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | |
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | |
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | |
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | |
| if (t[2]) _.ops.pop(); | |
| _.trys.pop(); continue; | |
| } | |
| op = body.call(thisArg, _); | |
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | |
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | |
| } | |
| }; | |
| var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } | |
| var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) { | |
| if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); | |
| var g = generator.apply(thisArg, _arguments || []), i, q = []; | |
| return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; | |
| function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } | |
| function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } | |
| function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } | |
| function fulfill(value) { resume("next", value); } | |
| function reject(value) { resume("throw", value); } | |
| function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } | |
| }; | |
| var __asyncValues = (this && this.__asyncIterator) || function (o) { | |
| if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); | |
| var m = o[Symbol.asyncIterator]; | |
| return m ? m.call(o) : typeof __values === "function" ? __values(o) : o[Symbol.iterator](); | |
| }; | |
| define(["require", "exports", "./csv-parser"], function (require, exports, csv_parser_1) { | |
| "use strict"; | |
| var _this = this; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| Symbol['asyncIterator'] = Symbol(); | |
| function asyncRange(from, to) { | |
| return __asyncGenerator(this, arguments, function asyncRange_1() { | |
| var i; | |
| return __generator(this, function (_a) { | |
| switch (_a.label) { | |
| case 0: | |
| i = from; | |
| _a.label = 1; | |
| case 1: | |
| if (!(i < to)) return [3 /*break*/, 4]; | |
| return [4 /*yield*/, i]; | |
| case 2: | |
| _a.sent(); | |
| _a.label = 3; | |
| case 3: | |
| i++; | |
| return [3 /*break*/, 1]; | |
| case 4: return [2 /*return*/]; | |
| } | |
| }); | |
| }); | |
| } | |
| function syncRange(from, to) { | |
| var i; | |
| return __generator(this, function (_a) { | |
| switch (_a.label) { | |
| case 0: | |
| i = from; | |
| _a.label = 1; | |
| case 1: | |
| if (!(i < to)) return [3 /*break*/, 4]; | |
| return [4 /*yield*/, i]; | |
| case 2: | |
| _a.sent(); | |
| _a.label = 3; | |
| case 3: | |
| i++; | |
| return [3 /*break*/, 1]; | |
| case 4: return [2 /*return*/]; | |
| } | |
| }); | |
| } | |
| function timeIt(name, fn) { | |
| return __awaiter(this, void 0, void 0, function () { | |
| var startMs, endMs, elapsedMs; | |
| return __generator(this, function (_a) { | |
| switch (_a.label) { | |
| case 0: | |
| startMs = Date.now(); | |
| return [4 /*yield*/, fn()]; | |
| case 1: | |
| _a.sent(); | |
| endMs = Date.now(); | |
| elapsedMs = endMs - startMs; | |
| console.log(name + ": " + elapsedMs + " ms"); | |
| return [2 /*return*/]; | |
| } | |
| }); | |
| }); | |
| } | |
| (function () { return __awaiter(_this, void 0, void 0, function () { | |
| var _this = this; | |
| return __generator(this, function (_a) { | |
| switch (_a.label) { | |
| case 0: return [4 /*yield*/, timeIt('sync', function () { return __awaiter(_this, void 0, void 0, function () { | |
| var _i, _a, i; | |
| return __generator(this, function (_b) { | |
| // Note: for this to work, you need target: es6. | |
| for (_i = 0, _a = syncRange(0, 549996); _i < _a.length; _i++) { | |
| i = _a[_i]; | |
| } | |
| return [2 /*return*/]; | |
| }); | |
| }); })]; | |
| case 1: | |
| _a.sent(); | |
| return [4 /*yield*/, timeIt('async', function () { return __awaiter(_this, void 0, void 0, function () { | |
| var _a, _b, i, e_1_1, e_1, _c; | |
| return __generator(this, function (_d) { | |
| switch (_d.label) { | |
| case 0: | |
| _d.trys.push([0, 6, 7, 12]); | |
| _a = __asyncValues(asyncRange(0, 549996)); | |
| _d.label = 1; | |
| case 1: return [4 /*yield*/, _a.next()]; | |
| case 2: | |
| if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 5]; | |
| return [4 /*yield*/, _b.value]; | |
| case 3: | |
| i = _d.sent(); | |
| _d.label = 4; | |
| case 4: return [3 /*break*/, 1]; | |
| case 5: return [3 /*break*/, 12]; | |
| case 6: | |
| e_1_1 = _d.sent(); | |
| e_1 = { error: e_1_1 }; | |
| return [3 /*break*/, 12]; | |
| case 7: | |
| _d.trys.push([7, , 10, 11]); | |
| if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 9]; | |
| return [4 /*yield*/, _c.call(_a)]; | |
| case 8: | |
| _d.sent(); | |
| _d.label = 9; | |
| case 9: return [3 /*break*/, 11]; | |
| case 10: | |
| if (e_1) throw e_1.error; | |
| return [7 /*endfinally*/]; | |
| case 11: return [7 /*endfinally*/]; | |
| case 12: return [2 /*return*/]; | |
| } | |
| }); | |
| }); })]; | |
| case 2: | |
| _a.sent(); | |
| return [4 /*yield*/, timeIt('lines', function () { return __awaiter(_this, void 0, void 0, function () { | |
| var numLines, numBytes, _a, _b, line, e_2_1, e_2, _c; | |
| return __generator(this, function (_d) { | |
| switch (_d.label) { | |
| case 0: | |
| numLines = 0, numBytes = 0; | |
| _d.label = 1; | |
| case 1: | |
| _d.trys.push([1, 7, 8, 13]); | |
| _a = __asyncValues(csv_parser_1.lines('stop_times.txt')); | |
| _d.label = 2; | |
| case 2: return [4 /*yield*/, _a.next()]; | |
| case 3: | |
| if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6]; | |
| return [4 /*yield*/, _b.value]; | |
| case 4: | |
| line = _d.sent(); | |
| numLines++; | |
| numBytes += line.length; | |
| _d.label = 5; | |
| case 5: return [3 /*break*/, 2]; | |
| case 6: return [3 /*break*/, 13]; | |
| case 7: | |
| e_2_1 = _d.sent(); | |
| e_2 = { error: e_2_1 }; | |
| return [3 /*break*/, 13]; | |
| case 8: | |
| _d.trys.push([8, , 11, 12]); | |
| if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10]; | |
| return [4 /*yield*/, _c.call(_a)]; | |
| case 9: | |
| _d.sent(); | |
| _d.label = 10; | |
| case 10: return [3 /*break*/, 12]; | |
| case 11: | |
| if (e_2) throw e_2.error; | |
| return [7 /*endfinally*/]; | |
| case 12: return [7 /*endfinally*/]; | |
| case 13: | |
| console.log("Read " + numLines + " lines, " + numBytes + " bytes."); | |
| return [2 /*return*/]; | |
| } | |
| }); | |
| }); })]; | |
| case 3: | |
| _a.sent(); | |
| return [4 /*yield*/, timeIt('lines chunked', function () { return __awaiter(_this, void 0, void 0, function () { | |
| var numLines, numBytes, _a, _b, chunk, _i, chunk_1, line, e_3_1, e_3, _c; | |
| return __generator(this, function (_d) { | |
| switch (_d.label) { | |
| case 0: | |
| numLines = 0, numBytes = 0; | |
| _d.label = 1; | |
| case 1: | |
| _d.trys.push([1, 7, 8, 13]); | |
| _a = __asyncValues(csv_parser_1.lineChunks('stop_times.txt')); | |
| _d.label = 2; | |
| case 2: return [4 /*yield*/, _a.next()]; | |
| case 3: | |
| if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6]; | |
| return [4 /*yield*/, _b.value]; | |
| case 4: | |
| chunk = _d.sent(); | |
| for (_i = 0, chunk_1 = chunk; _i < chunk_1.length; _i++) { | |
| line = chunk_1[_i]; | |
| numLines++; | |
| numBytes += line.length; | |
| } | |
| _d.label = 5; | |
| case 5: return [3 /*break*/, 2]; | |
| case 6: return [3 /*break*/, 13]; | |
| case 7: | |
| e_3_1 = _d.sent(); | |
| e_3 = { error: e_3_1 }; | |
| return [3 /*break*/, 13]; | |
| case 8: | |
| _d.trys.push([8, , 11, 12]); | |
| if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10]; | |
| return [4 /*yield*/, _c.call(_a)]; | |
| case 9: | |
| _d.sent(); | |
| _d.label = 10; | |
| case 10: return [3 /*break*/, 12]; | |
| case 11: | |
| if (e_3) throw e_3.error; | |
| return [7 /*endfinally*/]; | |
| case 12: return [7 /*endfinally*/]; | |
| case 13: | |
| console.log("Read " + numLines + " lines, " + numBytes + " bytes."); | |
| return [2 /*return*/]; | |
| } | |
| }); | |
| }); })]; | |
| case 4: | |
| _a.sent(); | |
| return [2 /*return*/]; | |
| } | |
| }); | |
| }); })().catch(function (e) { | |
| console.error(e); | |
| }); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment