方法性能分析器--装饰者模式应用

<!DOCTYPE html>
<html>
<head><title>方法性能分析器</title><meta charset="utf-8">
</head>
<body>
<div id="list-container"></div><script>function $(id){return document.getElementById(id);}
</script>
<script>// ListBuilder class.var ListBuilder = function (parent, listLength) {this.parent = $(parent);this.listLength = listLength;};ListBuilder.prototype = {buildList: function (container) {var list = document.createElement('ul');list.setAttribute('id', container);this.parent.appendChild(list);var len = this.listLength;while (len) {var item = document.createElement('li');list.appendChild(item);--len;}},removeLists: function(id){var ele = $(id);ele.parentNode.removeChild(ele);}};// SimpleProfiler class.var SimpleProfiler = function (component) {this.component = component;};SimpleProfiler.prototype = {buildList: function () {var startTime = (new Date()).getTime();this.component.buildList();var elapsedTime = (new Date()).getTime() - startTime;console.log('buildList:' + elapsedTime + ' ms');}};
/*var list = new ListBuilder('list-container', 5000);list = new SimpleProfiler(list);list.buildList();
*/// 通用化改造// MethodProfiler class.var MethodProfiler = function (component) {this.component = component;this.timers = {};for (var key in this.component) {// Ensure that the property is a functionif (typeof this.component[key] !== 'function') {continue;}// Add the methodvar that = this;(function (methodName) {that[methodName] = function () {that.startTimer(methodName);var returnValue = that.component[methodName].apply(that.component, arguments);that.displayTime(methodName, that.getElapsedTime(methodName));return returnValue;};})(key);}};MethodProfiler.prototype = {startTimer: function (methodName) {this.timers[methodName] = (new Date()).getTime();},getElapsedTime: function (methodName) {return (new Date()).getTime() - this.timers[methodName];},displayTime: function (methodName, time) {console.log(methodName + ': ' + time + ' ms');}};var list = new ListBuilder('list-container', 5000);list = new MethodProfiler(list);list.buildList('ol');list.buildList('ul');list.removeLists('ul');list.removeLists('ol');
</script>
</body>
</html>

 

 

转载于:https://www.cnblogs.com/webFrontDev/archive/2013/03/24/2978517.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python NLPIR(中科院汉语分词系统)的使用 十五分钟快速入门与完全掌握

前叙 博主写这篇文章使用了八十分钟,阅读需要十五分钟,读完之后你将会学会在Python中使用NLPIR2016.如果你花费更多的时间练习后半部分的例子,你将能够在一天内学会在Python中使用NLPIR2016的全部所需知识 如果你想要获取更详细的API翻译,你需要进一步学习ctypes,附赠一篇关于…

微信朋友圈也可以发语音你们造吗?

在微信朋友圈发照片太矫情&#xff0c;小视频又耗流量&#xff0c;只发文字又太单调&#xff0c;何不发段语音来呼朋唤友呢&#xff1f;你是说朋友圈发语音&#xff1f;这是真的吗&#xff1f;sure&#xff0c;开发者已经利用微信JS-SDK接口实现了&#xff0c;扫描下方的二维码…

MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

目录硬知识看门狗定时计数器 &#xff08;WDTCNT&#xff09;看门狗模式定时计数模式看门狗定时器中断时钟故障保护功能低功耗模式下的看门狗操作看门狗定时器控制寄存器WDT_A API (机翻)参数上机实战定时计数模式配置中断服务函数整体代码实验结果看门狗模式配置整体代码平台&…

初学 Unsupervised feature learning and deep learning--Sparse autoencoder

今天做了一下 Stanford CS294A 的一个 programming assignment: sparse autoencoder 因为之前做过 Andrew Ng 的 ml online class 的 neural network 那节的作业&#xff0c;所以这个实现起来就很 easy 了。直接贴代码&#xff08;all vectorized&#xff09;&#xff1a;1 [d …

【Nginx】Windows平台下配置Nginx服务实现负载均衡

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

PLC基础入门

PLC编程入门基础技术知识学习 2016-06-27 xjp7879 摘自 电工技术知...第一章 可编程控制器简介 可编程序控制器&#xff0c;英文称Programmable Controller&#xff0c;简称PC。但由于PC容易和个人计算机&#xff08;Personal Computer&#xff09;混淆&#xff0c;故人们仍习…

MSP430F5529 DriverLib 库函数学习笔记(十五)SFR 模块

目录API (机翻)SFR管理中断的函数SFR 管理RST/NMI引脚控制的函数参数平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) API (机翻) 特殊函数寄存器API提供了一组用于使用MSP430Ware SFR模块的函数。提供了启用和禁…

View,SurfaceView,SurfaceHolder

View&#xff1a;对于绘画来说&#xff0c;最重要的步骤是重载 onDraw方法并且修改画布Canvas。 SurfaceView&#xff1a;1&#xff0c;You can control the format of this surface and, if you like, its size; 2&#xff0c;One of the purposes of this class is to provid…

Xcode 的正确打开方式——Debugging

2019独角兽企业重金招聘Python工程师标准>>> 程序员日常开发中有大量时间都会花费在 debug 上&#xff0c;从事 iOS 开发不可避免地需要使用 Xcode。这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式。 “If debugging is the process of removing…

VS Code 调试 PHP有关配置

一、安装VS CODE 、 WampServer 二、用VS Code 打开php项目后&#xff0c;提示 "Cannot validate since no PHP executable is set. Use the setting php.validate.executablePath to configure the PHP executable." 解决方法如下&#xff1a; 在“文件”-“首选项”…

MSP430F5529 DriverLib 库函数学习笔记(十六)比较器B Comp_B

目录硬知识比较器B介绍比较器 B 的特点比较器 B 的结构模拟输入部分比较部分基准电压部分低通滤波部分比较器和普通运放的区别比较器B测量电阻原理利用比较器B实现电容触摸按键原理比较器B控制寄存器COMP_B API (机翻)介绍处理初始化和输出的函数参数处理中断的函数参数处理COM…

深入解析kubernetes controller-runtime

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

数据结构练习 00-自测3. 数组元素循环右移问题 (20)

一个数组A中存有N&#xff08;N>0&#xff09;个整数&#xff0c;在不允许使用另外数组的前提下&#xff0c;将每个整数循环向右移M&#xff08;M>0&#xff09;个位置&#xff0c;即将A中的数据由&#xff08;A0A1……AN-1&#xff09;变换为&#xff08;AN-M …… AN-1…

MSP432P401R TI Drivers 库函数学习笔记(一)导入工程模板

目录从Resource Explorer中导入从SDK导入测试平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) 从Resource Explorer中导入 本文所用编程平台为Code Composer Studio 10.4.0 启动软件后在Help中打开…

关于SQL Server 数据 出现(可疑)不可用状态的解决办法

当数据库发生这种操作故障时&#xff0c;可以按如下操作步骤可解决此方法&#xff0c;打开数据库里的Sql 查询编辑器窗口&#xff0c;运行以下的命令(注意&#xff1a;dafa为对应可疑的数据库名称&#xff0c;执行时&#xff0c;请改为你的可疑的数据库名称)。 1、修改数据库为…

多核运算

在iOS中concurrency编程的框架就是GCD(Grand Central Dispatch)&#xff0c; GCD的使用非常简单。它把任务分派到不同的queue队列来处理。开发者把任务代码装到一个个block里面&#xff0c;操作系统把这些任务代码分派到不同的资源里去处理&#xff0c;一个简单的例子来说&…

ThreadLocal的简单理解

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

新手学MVC----MVC3.0错误 HTTP 404

MVC3.0框架开发项目&#xff1a; 运行程序的时候遇到的错误&#xff1a;MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除&#xff0c;或 其名称已更改&#xff0c;或暂时不可用。请检查以下 URL 并确保其拼写正确。 错误的原因&#xff1a;路由不正确。…

JMS 在 SpringBoot 中的使用

当前环境 Mac OS 10.11.xdocker 1.12.1JDK 1.8SpringBoot 1.5前言 基于之前一篇“一个故事告诉你什么是消息队列”&#xff0c;了解了消息队列的使用场景以及相关的特性。本文主要讲述消息服务在 JAVA 中的使用。 市面上的有关消息队列的技术选型非常多&#xff0c;如果我们的代…

MSP432P401R TI Drivers 库函数学习笔记(二)认识TI-RTOS (TI-POSIX)

目录简介TI-RTOSFreeRTOSPOSIX运行时对象查看器 (Runtime Object Viewer)TI-POSIX 介绍在源代码中使用 POSIXTI-POSIX支持的函数摘要线程函数调用的前后关系线程管理线程属性线程同步障碍属性条件变量条件变量属性互斥锁互斥属性读写锁定读写锁属性辅助函数调用的前后关系时钟消…