/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
benchmarks/text-editor-long-lines.bench.js
105 строк
3 KB
Rafael Oleza
Reformat all JS files using prettier
31 май 2019, 19:33
31 май 2019, 19:33
7f3f040
Код
Авторство
О чём код?
const path = require('path'); const fs = require('fs'); const { TextEditor, TextBuffer } = require('atom'); const SIZES_IN_KB = [512, 1024, 2048]; const REPEATED_TEXT = fs .readFileSync( path.join(__dirname, '..', 'spec', 'fixtures', 'sample.js'), 'utf8' ) .replace(/\n/g, ''); const TEXT = REPEATED_TEXT.repeat( Math.ceil((SIZES_IN_KB[SIZES_IN_KB.length - 1] * 1024) / REPEATED_TEXT.length) ); module.exports = async ({ test }) => { const data = []; const workspaceElement = atom.workspace.getElement(); document.body.appendChild(workspaceElement); atom.packages.loadPackages(); await atom.packages.activate(); console.log(atom.getLoadSettings().resourcePath); for (let pane of atom.workspace.getPanes()) { pane.destroy(); } for (const sizeInKB of SIZES_IN_KB) { const text = TEXT.slice(0, sizeInKB * 1024); console.log(text.length / 1024); let t0 = window.performance.now(); const buffer = new TextBuffer({ text }); const editor = new TextEditor({ buffer, autoHeight: false, largeFileMode: true }); atom.grammars.assignLanguageMode(buffer, 'source.js'); atom.workspace.getActivePane().activateItem(editor); let t1 = window.performance.now(); data.push({ name: 'Opening a large single-line file', x: sizeInKB, duration: t1 - t0 }); const tickDurations = []; for (let i = 0; i < 20; i++) { await timeout(50); t0 = window.performance.now(); await timeout(0); t1 = window.performance.now(); tickDurations[i] = t1 - t0; } data.push({ name: 'Max time event loop was blocked after opening a large single-line file', x: sizeInKB, duration: Math.max(...tickDurations) }); t0 = window.performance.now(); editor.setCursorScreenPosition( editor.element.screenPositionForPixelPosition({ top: 100, left: 30 }) ); t1 = window.performance.now(); data.push({ name: 'Clicking the editor after opening a large single-line file', x: sizeInKB, duration: t1 - t0 }); t0 = window.performance.now(); editor.element.setScrollTop(editor.element.getScrollTop() + 100); t1 = window.performance.now(); data.push({ name: 'Scrolling down after opening a large single-line file', x: sizeInKB, duration: t1 - t0 }); editor.destroy(); buffer.destroy(); await timeout(10000); } workspaceElement.remove(); return data; }; function timeout(duration) { return new Promise(resolve => setTimeout(resolve, duration)); }