是否有一种方法可以告诉Ace Editor何时完成渲染内容?

时间:2015-08-04 06:20:18

标签: ace-editor

是否有一个事件描述Ace Editor何时完成语法高亮显示内容?

我现在正在做的是计算运行此呼叫所需的时间:

var theBeforeTimes = getTimer();
var aceEditor = ace.edit("myEditor");
//setAllOptionsOn(aceEditor);
//aceEditor.addListener("everythingsDone", doneHandler);
aceEditor.setValue(myCode);
console.log(getTimer()-theBeforeTimes);

我正在尝试不同的选项,我想测试每种模式下的性能。我的意思是,我想计算在没有任何扩展运行的情况下渲染所需的时间以及运行所有扩展所需的时间。这样,如果它很慢,我可以告诉或显示用户有多长时间和没有他们选择的扩展。

1 个答案:

答案 0 :(得分:1)

渲染是从requestAnimationFrame回调完成的,它不会受到扩展的影响。 标记化与渲染分开,并在https://github.com/ajaxorg/ace/blob/v1.2.0/lib/ace/background_tokenizer.js#L64

处超时完成

如果您想测量一种模式可以多快地标记整个文档的使用

function measure(editor) {
    var session = editor.session;
    // reset cache
    session.bgTokenizer.lines.length = session.bgTokenizer.states.length = 0
    var l = session.getLength()
    var t=performance.now()
    for (var i = 0; i < l; i++) session.getTokens(i)
    return performance.now()-t
}
measure(editor)