searchNReplace.benchmark.ts 1.5 KB
Newer Older
P
Peng Lyu 已提交
1 2 3 4 5 6 7
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
'use strict';

import { LinesTextBufferBuilder } from 'vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder';
8
import { PieceTreeTextBufferBuilder } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder';
P
Peng Lyu 已提交
9
import { IIdentifiedSingleEditOperation, ITextBuffer } from 'vs/editor/common/model';
10
import { createMockText, createMockBuffer, generateRandomReplaces } from 'vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils';
P
Peng Lyu 已提交
11
import { doBenchmark } from 'vs/editor/test/common/model/benchmark/benchmarkUtils';
P
Peng Lyu 已提交
12

P
Peng Lyu 已提交
13 14
let appyEditsBenchmark = function (id: string, buffers: ITextBuffer[], edits: IIdentifiedSingleEditOperation[]) {
	doBenchmark(id, buffers, buffer => {
15
		buffer.applyEdits(edits, false);
P
Peng Lyu 已提交
16
	});
P
Peng Lyu 已提交
17 18
};

19
let text = createMockText(1000, 50, 100);
P
Peng Lyu 已提交
20

P
Peng Lyu 已提交
21 22
console.log(`\n|replace all\t|line buffer\t|piece table\t|`);
console.log('|---|---|---|');
23
for (let i of [10, 100, 500, 1000]) {
P
Peng Lyu 已提交
24
	let linesTextBuffer = createMockBuffer(text, new LinesTextBufferBuilder());
25
	let pieceTreeTextBuffer = createMockBuffer(text, new PieceTreeTextBufferBuilder());
26
	let edits = generateRandomReplaces(text, i, 5, 10);
27
	appyEditsBenchmark(`replace ${i} occurrences`, [linesTextBuffer, pieceTreeTextBuffer], edits);
28
}