APC perf test
This commit is contained in:
@@ -6,9 +6,10 @@ import { perfContext, before, beforeEach, ThroughputRuntimeCase } from 'xterm-be
|
|||||||
|
|
||||||
import { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser';
|
import { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser';
|
||||||
import { C0, C1 } from 'common/data/EscapeSequences';
|
import { C0, C1 } from 'common/data/EscapeSequences';
|
||||||
import { IDcsHandler, IOscHandler, IParams } from 'common/parser/Types';
|
import { IDcsHandler, IOscHandler, IApcHandler, IParams } from 'common/parser/Types';
|
||||||
import { OscHandler } from 'common/parser/OscParser';
|
import { OscHandler } from 'common/parser/OscParser';
|
||||||
import { DcsHandler } from '../../out/common/parser/DcsParser';
|
import { DcsHandler } from 'common/parser/DcsParser';
|
||||||
|
import { ApcHandler } from 'common/parser/ApcParser';
|
||||||
|
|
||||||
const SIZE = 5000000;
|
const SIZE = 5000000;
|
||||||
|
|
||||||
@@ -32,6 +33,12 @@ class FastOscHandler implements IOscHandler {
|
|||||||
public end(success: boolean): boolean { return true; }
|
public end(success: boolean): boolean { return true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class FastApcHandler implements IApcHandler {
|
||||||
|
public start(): void {}
|
||||||
|
public put(data: Uint32Array, start: number, end: number): void {}
|
||||||
|
public end(success: boolean): boolean { return true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
perfContext('Parser throughput - 50MB data', () => {
|
perfContext('Parser throughput - 50MB data', () => {
|
||||||
let parsed: Uint32Array;
|
let parsed: Uint32Array;
|
||||||
@@ -108,6 +115,8 @@ perfContext('Parser throughput - 50MB data', () => {
|
|||||||
parser.registerEscHandler({ intermediates: '%', final: 'G' }, () => true);
|
parser.registerEscHandler({ intermediates: '%', final: 'G' }, () => true);
|
||||||
parser.registerDcsHandler({ final: 'p' }, new DcsHandler(data => true));
|
parser.registerDcsHandler({ final: 'p' }, new DcsHandler(data => true));
|
||||||
parser.registerDcsHandler({ final: 'q' }, new FastDcsHandler());
|
parser.registerDcsHandler({ final: 'q' }, new FastDcsHandler());
|
||||||
|
parser.registerApcHandler({ final: 'X' }, new ApcHandler(data => true));
|
||||||
|
parser.registerApcHandler({ final: 'Y' }, new FastApcHandler());
|
||||||
});
|
});
|
||||||
|
|
||||||
perfContext('PRINT - a', () => {
|
perfContext('PRINT - a', () => {
|
||||||
@@ -349,4 +358,64 @@ perfContext('Parser throughput - 50MB data', () => {
|
|||||||
return { payloadSize: parsed.length };
|
return { payloadSize: parsed.length };
|
||||||
}, { fork: true }).showAverageThroughput();
|
}, { fork: true }).showAverageThroughput();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
perfContext('APC string interface (short seq)', () => {
|
||||||
|
before(() => {
|
||||||
|
const data = '\x1b_Xhi\x1b\\\x1b_Xhi\x1b\\\x1b_Xhi\x1b\\\x1b_Xhi\x1b\\\x1b_Xhi\x1b\\';
|
||||||
|
let content = '';
|
||||||
|
while (content.length < SIZE) {
|
||||||
|
content += data;
|
||||||
|
}
|
||||||
|
parsed = toUtf32(content);
|
||||||
|
});
|
||||||
|
new ThroughputRuntimeCase('', async () => {
|
||||||
|
parser.parse(parsed, parsed.length);
|
||||||
|
return { payloadSize: parsed.length };
|
||||||
|
}, { fork: true }).showAverageThroughput();
|
||||||
|
});
|
||||||
|
|
||||||
|
perfContext('APC string interface (long seq)', () => {
|
||||||
|
before(() => {
|
||||||
|
const data = '\x1b_XLorem ipsum dolor sit amet, consetetur sadipscing elitr.\x1b\\';
|
||||||
|
let content = '';
|
||||||
|
while (content.length < SIZE) {
|
||||||
|
content += data;
|
||||||
|
}
|
||||||
|
parsed = toUtf32(content);
|
||||||
|
});
|
||||||
|
new ThroughputRuntimeCase('', async () => {
|
||||||
|
parser.parse(parsed, parsed.length);
|
||||||
|
return { payloadSize: parsed.length };
|
||||||
|
}, { fork: true }).showAverageThroughput();
|
||||||
|
});
|
||||||
|
|
||||||
|
perfContext('APC class interface (short seq)', () => {
|
||||||
|
before(() => {
|
||||||
|
const data = '\x1b_Yhi\x1b\\\x1b_Yhi\x1b\\\x1b_Yhi\x1b\\\x1b_Yhi\x1b\\\x1b_Yhi\x1b\\';
|
||||||
|
let content = '';
|
||||||
|
while (content.length < SIZE) {
|
||||||
|
content += data;
|
||||||
|
}
|
||||||
|
parsed = toUtf32(content);
|
||||||
|
});
|
||||||
|
new ThroughputRuntimeCase('', async () => {
|
||||||
|
parser.parse(parsed, parsed.length);
|
||||||
|
return { payloadSize: parsed.length };
|
||||||
|
}, { fork: true }).showAverageThroughput();
|
||||||
|
});
|
||||||
|
|
||||||
|
perfContext('APC class interface (long seq)', () => {
|
||||||
|
before(() => {
|
||||||
|
const data = '\x1b_YLorem ipsum dolor sit amet, consetetur sadipscing elitr.\x1b\\';
|
||||||
|
let content = '';
|
||||||
|
while (content.length < SIZE) {
|
||||||
|
content += data;
|
||||||
|
}
|
||||||
|
parsed = toUtf32(content);
|
||||||
|
});
|
||||||
|
new ThroughputRuntimeCase('', async () => {
|
||||||
|
parser.parse(parsed, parsed.length);
|
||||||
|
return { payloadSize: parsed.length };
|
||||||
|
}, { fork: true }).showAverageThroughput();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user