Skip to content

Commit

Permalink
perf: optimize object creation in decode, fromJSON and `fromParti…
Browse files Browse the repository at this point in the history
…al` (#457)
  • Loading branch information
aikoven committed Dec 28, 2021
1 parent cb2d71c commit 70832d3
Show file tree
Hide file tree
Showing 90 changed files with 2,223 additions and 1,545 deletions.
10 changes: 6 additions & 4 deletions integration/angular/simple-message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ export interface SimpleMessage {
numberField: number;
}

const baseSimpleMessage: object = { numberField: 0 };
function createBaseSimpleMessage(): SimpleMessage {
return { numberField: 0 };
}

export const SimpleMessage = {
encode(message: SimpleMessage, writer: Writer = Writer.create()): Writer {
Expand All @@ -21,7 +23,7 @@ export const SimpleMessage = {
decode(input: Reader | Uint8Array, length?: number): SimpleMessage {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseSimpleMessage } as SimpleMessage;
const message = createBaseSimpleMessage();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -37,7 +39,7 @@ export const SimpleMessage = {
},

fromJSON(object: any): SimpleMessage {
const message = { ...baseSimpleMessage } as SimpleMessage;
const message = createBaseSimpleMessage();
message.numberField =
object.numberField !== undefined && object.numberField !== null ? Number(object.numberField) : 0;
return message;
Expand All @@ -50,7 +52,7 @@ export const SimpleMessage = {
},

fromPartial<I extends Exact<DeepPartial<SimpleMessage>, I>>(object: I): SimpleMessage {
const message = { ...baseSimpleMessage } as SimpleMessage;
const message = createBaseSimpleMessage();
message.numberField = object.numberField ?? 0;
return message;
},
Expand Down
20 changes: 12 additions & 8 deletions integration/avoid-import-conflicts/simple.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ export interface SimpleEnums {
importEnum: SimpleEnum1;
}

const baseSimple: object = { name: '' };
function createBaseSimple(): Simple {
return { name: '', otherSimple: undefined };
}

export const Simple = {
encode(message: Simple, writer: Writer = Writer.create()): Writer {
Expand All @@ -74,7 +76,7 @@ export const Simple = {
decode(input: Reader | Uint8Array, length?: number): Simple {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -93,7 +95,7 @@ export const Simple = {
},

fromJSON(object: any): Simple {
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
message.name = object.name !== undefined && object.name !== null ? String(object.name) : '';
message.otherSimple =
object.otherSimple !== undefined && object.otherSimple !== null
Expand All @@ -111,7 +113,7 @@ export const Simple = {
},

fromPartial<I extends Exact<DeepPartial<Simple>, I>>(object: I): Simple {
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
message.name = object.name ?? '';
message.otherSimple =
object.otherSimple !== undefined && object.otherSimple !== null
Expand All @@ -121,7 +123,9 @@ export const Simple = {
},
};

const baseSimpleEnums: object = { localEnum: 0, importEnum: 0 };
function createBaseSimpleEnums(): SimpleEnums {
return { localEnum: 0, importEnum: 0 };
}

export const SimpleEnums = {
encode(message: SimpleEnums, writer: Writer = Writer.create()): Writer {
Expand All @@ -137,7 +141,7 @@ export const SimpleEnums = {
decode(input: Reader | Uint8Array, length?: number): SimpleEnums {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseSimpleEnums } as SimpleEnums;
const message = createBaseSimpleEnums();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -156,7 +160,7 @@ export const SimpleEnums = {
},

fromJSON(object: any): SimpleEnums {
const message = { ...baseSimpleEnums } as SimpleEnums;
const message = createBaseSimpleEnums();
message.localEnum =
object.localEnum !== undefined && object.localEnum !== null ? simpleEnumFromJSON(object.localEnum) : 0;
message.importEnum =
Expand All @@ -172,7 +176,7 @@ export const SimpleEnums = {
},

fromPartial<I extends Exact<DeepPartial<SimpleEnums>, I>>(object: I): SimpleEnums {
const message = { ...baseSimpleEnums } as SimpleEnums;
const message = createBaseSimpleEnums();
message.localEnum = object.localEnum ?? 0;
message.importEnum = object.importEnum ?? 0;
return message;
Expand Down
10 changes: 6 additions & 4 deletions integration/avoid-import-conflicts/simple2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ export interface Simple {
age: number;
}

const baseSimple: object = { name: '', age: 0 };
function createBaseSimple(): Simple {
return { name: '', age: 0 };
}

export const Simple = {
encode(message: Simple, writer: Writer = Writer.create()): Writer {
Expand All @@ -63,7 +65,7 @@ export const Simple = {
decode(input: Reader | Uint8Array, length?: number): Simple {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -82,7 +84,7 @@ export const Simple = {
},

fromJSON(object: any): Simple {
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
message.name = object.name !== undefined && object.name !== null ? String(object.name) : '';
message.age = object.age !== undefined && object.age !== null ? Number(object.age) : 0;
return message;
Expand All @@ -96,7 +98,7 @@ export const Simple = {
},

fromPartial<I extends Exact<DeepPartial<Simple>, I>>(object: I): Simple {
const message = { ...baseSimple } as Simple;
const message = createBaseSimple();
message.name = object.name ?? '';
message.age = object.age ?? 0;
return message;
Expand Down
10 changes: 6 additions & 4 deletions integration/barrel-imports/bar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ export interface Bar {
age: number;
}

const baseBar: object = { name: '', age: 0 };
function createBaseBar(): Bar {
return { name: '', age: 0 };
}

export const Bar = {
encode(message: Bar, writer: Writer = Writer.create()): Writer {
Expand All @@ -23,7 +25,7 @@ export const Bar = {
decode(input: Reader | Uint8Array, length?: number): Bar {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseBar } as Bar;
const message = createBaseBar();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -42,7 +44,7 @@ export const Bar = {
},

fromJSON(object: any): Bar {
const message = { ...baseBar } as Bar;
const message = createBaseBar();
message.name = object.name !== undefined && object.name !== null ? String(object.name) : '';
message.age = object.age !== undefined && object.age !== null ? Number(object.age) : 0;
return message;
Expand All @@ -56,7 +58,7 @@ export const Bar = {
},

fromPartial<I extends Exact<DeepPartial<Bar>, I>>(object: I): Bar {
const message = { ...baseBar } as Bar;
const message = createBaseBar();
message.name = object.name ?? '';
message.age = object.age ?? 0;
return message;
Expand Down
10 changes: 6 additions & 4 deletions integration/barrel-imports/foo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ export interface Foo {
bar: Bar | undefined;
}

const baseFoo: object = { name: '' };
function createBaseFoo(): Foo {
return { name: '', bar: undefined };
}

export const Foo = {
encode(message: Foo, writer: Writer = Writer.create()): Writer {
Expand All @@ -24,7 +26,7 @@ export const Foo = {
decode(input: Reader | Uint8Array, length?: number): Foo {
const reader = input instanceof Reader ? input : new Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = { ...baseFoo } as Foo;
const message = createBaseFoo();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
Expand All @@ -43,7 +45,7 @@ export const Foo = {
},

fromJSON(object: any): Foo {
const message = { ...baseFoo } as Foo;
const message = createBaseFoo();
message.name = object.name !== undefined && object.name !== null ? String(object.name) : '';
message.bar = object.bar !== undefined && object.bar !== null ? Bar.fromJSON(object.bar) : undefined;
return message;
Expand All @@ -57,7 +59,7 @@ export const Foo = {
},

fromPartial<I extends Exact<DeepPartial<Foo>, I>>(object: I): Foo {
const message = { ...baseFoo } as Foo;
const message = createBaseFoo();
message.name = object.name ?? '';
message.bar = object.bar !== undefined && object.bar !== null ? Bar.fromPartial(object.bar) : undefined;
return message;
Expand Down

0 comments on commit 70832d3

Please sign in to comment.