searchNReplace.benchmark.ts 1.5 KB
Newer Older
P
Peng Lyu 已提交
1 2 3 4 5 6 7 8 9
/*---------------------------------------------------------------------------------------------
 *  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';
import { PieceTableTextBufferBuilder } from 'vs/editor/common/model/pieceTableTextBuffer/pieceTableTextBufferBuilder';
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

12
let appyEditsBenchmark = function (id: string, buffer: ITextBuffer, edits: IIdentifiedSingleEditOperation[]) {
P
Peng Lyu 已提交
13 14 15 16 17 18 19
	console.time(id);
	for (let i = 0, len = edits.length; i < len; i++) {
		buffer.applyEdits([edits[i]], false);
	}
	console.timeEnd(id);
};

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

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