平时在做开发的时候,有的时候会看到介绍说这个方法没有那个方法效率性能高,那么到底怎么高呢,大多数只是猜猜或者看书上介绍的原理而已。但是我们如何做到定量统计某个函数或者方法的性能呢。
例如往页面中插入大量dom元素的时候,我们一般会用createElement然后再append,然后如果你查资料你会看到建议你使用createDocumentFragment, 因为这个是先见元素插入到内存你中,然后再一次性插入到dom中,避免了频繁重绘。按道理来说确实是这样,那我们怎么亲自见证一下呢。
所以有个方法就是统计函数的执行时间,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function appendDom() { var d = +new Date; for(var i = 0; i < 100000; i++) { var div = document.createElement('div'); div.className = "append"; div.setAttribute('index', i); div.textContent = "dom" + i; //(text); document.body.appendChild(div); } console.log((+new Date) - d + 'ms', 'appendDom'); } appendDom(); |
最后可以得到函数的输出的时间,但是这种方法有个缺点就是侵入性太大了,用起来也不是太方便。总不能每个函数都要这样吧。
所以来正题了,使用aop的思想,aop又叫切面函数 Aspect-oriented programming 从侧面函数侧面出发,不去侵入函数内部,来做一些相应的统计或者非核心逻辑的功能。 继续阅读“JS-使用AOP思想实现统计函数时间”