cache code. will try hexy as current implement is too slow

This commit is contained in:
Xen 2020-05-27 21:45:13 +08:00
parent ed76398fab
commit d85921a15e
1 changed files with 49 additions and 4 deletions

View File

@ -194,6 +194,44 @@ function openFile() {
});
}
function hexDump(buffer) {
let lines = parseInt(buffer.length / hmUnitCount);
if (buffer.length % hmUnitCount !== 0) lines++;
let hexBuffer = buffer2Hex(buffer);
const model = editor.getModel();
for (let i = 0, lineNumber = model.getLineCount(); i < lines; i++, lineNumber++) {
let line = "";
let originalHex = hexBuffer.slice(
hmHexPartLength * i,
hmHexPartLength * (i + 1)
);
line = line.concat(originalHex);
let span = " ".repeat(
hmSpanPartLength + hmHexPartLength - originalHex.length
);
line = line.concat(span);
let originalStr = buffer.slice(
hmStrPartLength * i,
hmStrPartLength * (i + 1)
);
line = line.concat(originalStr.toString().replace(/[^\x20-\x7E]/g, "."));
line = line.concat("\n");
// append to last line
model.applyEdits([
{
range: new monaco.Range(),
text: line,
},
]);
}
}
function openBinFile() {
dialog
.showOpenDialog({
@ -203,10 +241,17 @@ function openBinFile() {
if (result.canceled === false) {
editor.getModel().setValue("");
fs.readFile(result.filePaths[0], (e, buffer) => {
if (e) throw e;
showHex(buffer);
})
const path = result.filePaths[0];
const rs = fs.createReadStream(path, { highWaterMark: 4 * 1024 });
let t1 = new Date();
rs.on("data", (data) => {
console.log("rs data");
showHex(data);
});
rs.on("end", (data) => {
let t2 = new Date();
console.log("rs end", (t2 - t1) / 1000);
});
}
});
}