Skip to content

Commit 26e6668

Browse files
committed
test: check performance
1 parent 4e91b63 commit 26e6668

File tree

1 file changed

+92
-1
lines changed

1 file changed

+92
-1
lines changed

packages/alphatab/test/importer/AlphaTexImporterOldNewCompat.test.ts

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import { AlphaTexErrorWithDiagnostics, AlphaTexImporter } from '@src/importer/AlphaTexImporter';
22
import { ScoreLoader } from '@src/importer/ScoreLoader';
3+
import { Logger } from '@src/Logger';
34
import type { Score } from '@src/model/Score';
45
import { Settings } from '@src/Settings';
56
import { AlphaTexExporterOld } from '@test/exporter/AlphaTexExporterOld';
67
import { AlphaTexError, AlphaTexImporterOld } from '@test/importer/AlphaTexImporterOld';
78
import { ComparisonHelpers } from '@test/model/ComparisonHelpers';
89
import { TestPlatform } from '@test/TestPlatform';
9-
import { assert } from 'chai';
10+
import { assert, expect } from 'chai';
11+
import * as inspector from 'node:inspector';
12+
import fs from 'node:fs';
1013

1114
describe('AlphaTexImporterOldNewCompat', () => {
1215
async function loadScore(name: string): Promise<Score | null> {
@@ -128,4 +131,92 @@ describe('AlphaTexImporterOldNewCompat', () => {
128131
it('visual-special-tracks', async () => {
129132
await testRoundTripFolderEqual('visual-tests/special-tracks');
130133
});
134+
135+
it('performance', async () => {
136+
const newTex = await TestPlatform.loadFileAsString('test-data/exporter/notation-legend-formatted.atex');
137+
const settings = new Settings();
138+
const oldTex = new AlphaTexExporterOld().exportToString(ScoreLoader.loadAlphaTex(newTex, settings));
139+
140+
let sumNew = 0;
141+
142+
function run(i: number, check: boolean) {
143+
const oldImporter = new AlphaTexImporterOld();
144+
oldImporter.initFromString(oldTex, settings);
145+
146+
const oldStart = performance.now();
147+
oldImporter.readScore();
148+
const oldEnd = performance.now();
149+
150+
const newImporter = new AlphaTexImporter();
151+
newImporter.initFromString(oldTex, settings);
152+
153+
const newStart = performance.now();
154+
newImporter.readScore();
155+
const newEnd = performance.now();
156+
157+
if (check) {
158+
const oldTime = oldEnd - oldStart;
159+
const newTime = newEnd - newStart;
160+
Logger.info('Test-AlphaTexImporterOldNewCompat-performance', 'Old', i, oldTime);
161+
Logger.info('Test-AlphaTexImporterOldNewCompat-performance', 'New', i, newTime);
162+
Logger.info('Test-AlphaTexImporterOldNewCompat-performance', 'Diff', i, newTime - oldTime);
163+
sumNew += newTime;
164+
}
165+
}
166+
167+
// warmup
168+
for (let i = 0; i < 3; i++) {
169+
run(i, false);
170+
}
171+
172+
const testCount = 10;
173+
for (let i = 0; i < testCount; i++) {
174+
run(i, true);
175+
}
176+
177+
const avgNew = sumNew / testCount;
178+
expect(avgNew).to.be.lessThan(25);
179+
});
180+
181+
// it('profile', async () => {
182+
// const session = new inspector.Session();
183+
// session.connect();
184+
185+
// const newTex = await TestPlatform.loadFileAsString('test-data/exporter/notation-legend-formatted.atex');
186+
// const settings = new Settings();
187+
// const oldTex = new AlphaTexExporterOld().exportToString(ScoreLoader.loadAlphaTex(newTex, settings));
188+
189+
// await new Promise<void>(resolve => {
190+
// session.post('Profiler.enable', () =>
191+
// session.post('Profiler.start', () => {
192+
// resolve();
193+
// })
194+
// );
195+
// });
196+
197+
// for (let i = 0; i < 10; i++) {
198+
// const newImporter = new AlphaTexImporter();
199+
// newImporter.initFromString(oldTex, settings);
200+
// newImporter.readScore();
201+
// }
202+
203+
// await new Promise<void>((resolve, reject) => {
204+
// session.post('Profiler.stop', async (sessionErr, data) => {
205+
// if (sessionErr) {
206+
// reject(sessionErr);
207+
// return;
208+
// }
209+
210+
// try {
211+
// await TestPlatform.saveFileAsString(
212+
// `${new Date().toISOString().replaceAll(/[^0-9]/g, '')}.cpuprofile`,
213+
// JSON.stringify(data.profile)
214+
// );
215+
// resolve();
216+
// } catch (e) {
217+
// reject(e);
218+
// }
219+
// });
220+
// });
221+
// }).timeout(60000);
131222
});

0 commit comments

Comments
 (0)