gpt4 book ai didi

使用 AOP 调用方法前后的 Javascript 控制台输出

转载 作者:行者123 更新时间:2023-11-30 05:31:22 24 4
gpt4 key购买 nike

我想测量方法的计算时间。

一个不错的方法是 ( How do you performance test JavaScript code? ) 与 console.time('Function #1');console.timeEnd('Function #1');

我的想法是在生命周期方法中添加这些控制台输出。在这种情况下,使用类似 createContent:funtion(){}; 方法的 SAPUI5。

这应该可以通过 AOP 使用 before()after() 来减少时间计数。

你会建议使用哪个 AOP 框架以及如何实现它需要自动修改标识字符串 "Function #1"

最佳答案

实际上在 Javascript 中不需要方面,因为您可以随时更改任何对象的任何功能。 JavaScript 原型(prototype)允许您在运行时操作对象的所有实例的方法实现。以下是您计划的两种方法。

您可以使用通用包装函数:

var measureId = 0;
var fnMeasureFunction = function(fnToMeasure) {
console.time('measure'+ measureId);
fnToMeasure();
console.timeEnd('measure'+ measureId);
measureId++;
}

不可否认,这需要您更改实际代码...

对于静态函数或属于原型(prototype)的函数,您也可以做某事。从外部像这样,无需对现有代码进行任何更改:

// any static function
var measureId = 0;
var fnOriginalFunction = sap.ui.core.mvc.JSViewRenderer.render;
sap.ui.core.mvc.JSViewRenderer.render = function() {
console.time('measure'+ measureId);
fnOriginalFunction.apply(this, arguments);
console.timeEnd('measure'+ measureId);
measureId++;
}

// any prototype function
var fnOriginalFunction = sap.m.Button.prototype.ontouchstart;
sap.m.Button.prototype.ontouchstart= function() {
console.time('measure'+ measureId);
fnOriginalFunction.apply(this, arguments);
console.timeEnd('measure'+ measureId);
measureId++;
}

关于使用 AOP 调用方法前后的 Javascript 控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com