Улучшения производительности при использовании украшений, setDecorations - PullRequest
0 голосов
/ 30 октября 2019

Что можно сделать, чтобы улучшить оформление большого файла (1М строк). Я использую следующий код для украшения GUID каждого файла.

  const RE_GUID = /([0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12})\|/gi;

  const markGUID = (): void => {
    if (!activeEditor) {
      return;
    }
    const text = activeEditor.document.getText();

    const guid: vscode.DecorationOptions[] = [];
    let match;
    RE_GUID.lastIndex = 0;
    while ((match = RE_GUID.exec(text))) {
      const startPos = activeEditor.document.positionAt(match.index);
      const endPos = activeEditor.document.positionAt(
        match.index + match[1].length
      );
      const decoration: vscode.DecorationOptions = {
        range: new vscode.Range(startPos, endPos),
        hoverMessage: 'CorrelationID',
      };
      guid.push(decoration);
    }
    activeEditor.setDecorations(defineGUIDStyle, guid);
  };

Можно ли его пакетировать? (Я вижу, что мог бы этот while цикл распространяться с setTimeout)

Можно ли это сделать в другом потоке? Могу ли я использовать WebWorker?

...