有没有一种方法可以判断 Ace Editor 何时完成其内容的渲染?

Is there a method to tell when the Ace Editor has finished rendering it's content?

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

我现在正在做的是计算 运行 这个电话需要多长时间:

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

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

渲染由 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)