Optimization: Reuse ArrayBuffer during serialization.

This commit is contained in:
Ryan Dahl 2018-10-17 13:04:28 -04:00
parent 4e2e185de7
commit 213885a9d0
25 changed files with 115 additions and 57 deletions

View file

@ -4,7 +4,7 @@ import { Reader, Writer, Closer, ReadResult } from "./io";
import * as dispatch from "./dispatch";
import * as msg from "gen/msg_generated";
import { assert } from "./util";
import { flatbuffers } from "flatbuffers";
import * as flatbuffers from "./flatbuffers";
/** The Deno abstraction for reading and writing files. */
export class File implements Reader, Writer, Closer {
@ -51,7 +51,7 @@ export async function open(
filename: string,
mode: OpenMode = "r"
): Promise<File> {
const builder = new flatbuffers.Builder();
const builder = flatbuffers.createBuilder();
const filename_ = builder.createString(filename);
msg.Open.startOpen(builder);
msg.Open.addFilename(builder, filename_);
@ -73,7 +73,7 @@ export async function read(
rid: number,
p: ArrayBufferView
): Promise<ReadResult> {
const builder = new flatbuffers.Builder();
const builder = flatbuffers.createBuilder();
msg.Read.startRead(builder);
msg.Read.addRid(builder, rid);
const inner = msg.Read.endRead(builder);
@ -90,7 +90,7 @@ export async function read(
* Resolves with the number of bytes written.
*/
export async function write(rid: number, p: ArrayBufferView): Promise<number> {
const builder = new flatbuffers.Builder();
const builder = flatbuffers.createBuilder();
msg.Write.startWrite(builder);
msg.Write.addRid(builder, rid);
const inner = msg.Write.endWrite(builder);
@ -104,7 +104,7 @@ export async function write(rid: number, p: ArrayBufferView): Promise<number> {
/** Close the file ID. */
export function close(rid: number): void {
const builder = new flatbuffers.Builder();
const builder = flatbuffers.createBuilder();
msg.Close.startClose(builder);
msg.Close.addRid(builder, rid);
const inner = msg.Close.endClose(builder);