中国施工总承包100强seo快排软件

pingmian/2025/10/11 16:27:39/文章来源:
中国施工总承包100强,seo快排软件,中国住房建设部网站,广州营销优化使用 Chrome Timeline 来优化页面性能有时候#xff0c;我们就是会不由自主地写出一些低效的代码#xff0c;严重影响页面运行的效率。或者我们接手的项目中#xff0c;前人写出来的代码千奇百怪#xff0c;比如为了一个 Canvas 特效需要同时绘制 600 个三角形#xff0c;…使用 Chrome Timeline 来优化页面性能 有时候我们就是会不由自主地写出一些低效的代码严重影响页面运行的效率。或者我们接手的项目中前人写出来的代码千奇百怪比如为了一个 Canvas 特效需要同时绘制 600 个三角形又比如 Coding.net 的任务中心需要同时 watch 上万个变量的变化等等。那么如果我们遇到了一个比较低效的页面应该如何去优化它呢 优化前的准备知己知彼 在一切开始之前我们先打开 F12 面板熟悉一下我们接下来要用到的工具Timeline 嗯没错就是它。下面逐一介绍一下吧。区域 1 是一个缩略图可以看到除了时间轴以外被上下分成了四块分别代表 FPS、CPU 时间、网络通信时间、堆栈占用这个缩略图可以横向缩放白色区域是下面可以看到的时间段灰色当然是不可见的啦。区域 2 可以看一些交互事件例如你滚动了一下页面那么这里会出现一个 scroll 的线段线段覆盖的范围就是滚动经过的时间。区域 3 则是具体的事件列表了。 一开始没有记录的时候所有的区域都是空的。开始统计和结束统计都很简单左上角那坨黑色的圆圈就是。它右边那个长得像“禁止通行”的按钮是用来清除现有记录的。当有数据的时候我们把鼠标滚轮向上滚可以看到区域被放大了 短短的时间里浏览器做了这么多事情。对于一般的屏幕原则上来说一秒要往屏幕上绘制 60 帧所以理论上讲我们一帧内的计算时间不能超过 16 毫秒然而浏览器除了执行我们的代码以外还要干点别的例如计算 CSS播放音频……所以其实我们能用的只有 10~12 毫秒左右。 差不多熟悉操作了那么就来一下实战吧假如有一天你接手了这样一段代码 !-- 一段小动画点击按钮之后会有一个爆炸的粒子效果 -- !DOCTYPE html html head meta charsetutf-8 titleTest/title style .main { position: relative; width: 500px; height: 500px; background: #000; overflow: hidden; } .circle { position: absolute; border-radius: 50%; border: 1px solid #FFF; width: 8px; height: 8px; } /style /head body div classmain/div hr button onclickshowAnimation()点我/button script srcjquery.min.js/script script srcanimation.js/script /body /html // animation.js// 粒子总数 var COUNT 500; // 重力 var G -0.1; // 摩擦力 var F -0.04;function init() {for (var i 0; i COUNT; i) {var d Math.random() * 2 * Math.PI;var v Math.random() * 5;var circle $(div idcircle- i classcircle data-x250 data-y250 data-d d data-v v /div);circle.appendTo($(.main)); } } function updateCircle() { for (var i 0; i COUNT; i) { var x parseFloat($(#circle- i).attr(data-x)); var y parseFloat($(#circle- i).attr(data-y)); var d parseFloat($(#circle- i).attr(data-d)); var v parseFloat($(#circle- i).attr(data-v)); var vx v * Math.cos(d); var vy v * Math.sin(d); if (Math.abs(vx) 1e-9) vx 0; // 速度分量改变 vx F * Math.cos(d); vy F * Math.sin(d) G; // 计算新速度 v Math.sqrt(vx * vx vy * vy); if (vy 0) d Math.acos(vx / v); else d -Math.acos(vx / v); // 位移分量改变 x vx; y vy; $(#circle- i).attr(data-x, x); $(#circle- i).attr(data-y, y); $(#circle- i).attr(data-d, d); $(#circle- i).attr(data-v, v); $(#circle- i).css({top: 400 - y, left: x}); } } var interval null; function showAnimation() { if (interval) clearInterval(interval); $(.main).html(); init(); interval setInterval(updateCircle, 1000 / 60); } 效果如下右上角的 FPS 计数器是 Chrome 调试工具自带的 只有 10 FPS……10 FPS……坑爹呢这是 好吧打开 Timeline按下记录按钮点一下页面中的“点我”稍微过一会儿停止记录就会得到一些数据。放大一些对 jQuery 比较熟悉的同学可以看出来这些大部分是 jQuery 的函数。我们点一下那个 updateCircle 的区块然后看下面 这里告诉我们这个函数运行了多久、函数代码在哪儿。我们点一下那个链接于是就跳到了 Source 页 是不是很震撼之前这个页面只是用来 Debug 的没想到现在居然带了精确到行的运行时间统计。当然这个时间是当前这一行在“刚才我们点击的区块对应的执行时间段”中运行的时间。所以我们就拿最慢的几句话来下手吧 优化一减少 DOM 操作 看到这几行代码第一反应是mdzz。本来 DOM 操作就慢还要在字符串和 float 之间转来转去。果断改掉于是用一个单独的数组来存 x、y、d、v 这些属性。 var objects []; // 在 init 函数中 objects.push({x: 250,y: 250,d: d,v: v }); // 在 updateCircle 函数中 var x objects[i].x; var y objects[i].y; var d objects[i].d; var v objects[i].v; // …. objects[i].x x; objects[i].y y; objects[i].d d; objects[i].v v;效果显著我们再来看一下精确到行的数据 优化二减少不必要的运算 所以最耗时的那句话已经变成了计算 vx 和 vy毕竟三角函数算法比较复杂嘛可以理解。至于后面的三角函数为什么那么快我猜可能是 Chrome 的 V8 引擎将其缓存了这句话不保证正确性。然而不知道大家有没有发现其实计算 d 完全没必要我们只需要存 vx 和 vy 即可不需要存 v 和 d // init var vx v * Math.cos(d); var vy v * Math.sin(d); objects.push({x: 250,y: 250,vx: vx,vy: vy }); // updateCircle var vx objects[i].vx; var vy objects[i].vy; // 计算新速度 var v Math.sqrt(vx * vx vy * vy); if (Math.abs(vx) 1e-9) vx 0; // 速度分量改变 vx F * vx / v; vy F * vy / v G; // …. objects[i].vx vx; objects[i].vy vy; 只有加减乘除和开平方运算每次比原来的时间又少了两毫秒。从流畅的角度来说其实已经可以满帧运行了然而为什么我还是觉得偶尔会有点卡呢 优化三替换 setInterval 既然偶尔会掉帧那么就看看是怎么掉的呗~原则上来说在每一次浏览器进行绘制之前Timeline 里面应该有一个叫 Paint 的事件就像这样 看到这些绿色的东西了没就是它们看上面的时间轴虽然代码中 setInterval 的长度是 1000/16 毫秒但是其实根本不能保证所以我们需要使用 requestAnimationFrame 来代替它。这是浏览器自带的专门为动画服务的函数浏览器会自动优化这个函数的调用时机。并且如果页面被隐藏浏览器还会自动暂停调用有效地减少了 CPU 的开销。 // 在 updateCircle 最后加一句 requestAnimationFrame(updateCircle); // 去掉全部跟 setInterval 有关的句子把 showAnimation 最后一句直接改成这个 updateCircle();我们至少可以保证我们每算一次屏幕上就会显示一次因此不会掉帧前提是每计算一次的时间小于 12ms。但是虽然计算时间少了浏览器重计算样式、绘制图像的时间可是一点都没变。能不能再做优化呢 优化四使用硬件加速、避免反复查找元素 如果我们用 transform 来代替 left 和 top 来对元素进行定位那么浏览器会为这个元素单独创立一个合成层专门使用 GPU 进行渲染这样可以把重计算的代价降到最低。有兴趣的同学可以研究一下“CSS 硬件加速”的机制。同时我们可以缓存一下 jQuery 的元素或者 DOM 元素这样不用每次都重新查找也能稍微提高一点效率。如果把元素缓存在 objects 数组中那么连 id 都不用写了 // init var circle $(div classcircle/div); objects.push({ x: 250, y: 250, vx: vx, vy: vy, // 其实可以只存 DOM不存 jQuery 对象 circle: circle[0] }); // updateCircle 里面 for 循环的最后一句话替换掉 objects[i].circle.style.transform translate( x px, (400 - y) px); 看起来是不是很爽了 其实优化是无止境的例如我在 init 函数中完全可以不用 jQuery改用 createDocumentFragment 来拼接元素这样初始化的时间就可以急剧缩短调换 updateCircle 中的几个语句的顺序在 V8 引擎下效率可能会有一定的提升甚至还可以结合 Profile 面板来分析内存占用查看浏览器绘图的细节……然而个人感觉并用不到这么极限的优化。对于一个项目来说如果单纯为了优化而写一些奇怪的代码是很不合算的。 — P.S. 全部的代码在这里欢迎吐槽 未优化版 | 优化版 转载于:https://www.cnblogs.com/Coding-net/p/5756316.html

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

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

相关文章

重庆高端网站设计自建网站公司

在ADS中,信号上升时间为信号从0~100%所用的时间,而实际上定义的上升边均为10%~90%,所以可以认为上升边=0.8*ADS设置上升时间。 一、终端开路及短路的反射信号 1.仿真条…

网站建设报价单初期整理代理游戏

目录: 目录 1 JSP基础知识架构 1 指令标识 1 Page命令 2 Including指令 3 taglib指令 2 脚本标识 1 JSP表达式 2 声明标识 3 代码片段 3 JSP注释 1 HTML注释 2 带有JSP表达式的注释 3 隐藏注释 4 动态注释 4 动作标识 1 包含文件标识 2 请求转发标…

wap网站制作哪家好wordpress 自动发货

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 对于谷歌和安卓来说,这是一个重要时刻。谷歌刚刚发布了 Gemini 1.0,这是其最新的LLM,它采用了 OpenAI 的 GPT4。 共有三种不同…

检测站营销方案石家庄新闻主持人

在实际开发中,我们经常会遇到下载文件的需求,一般情况下接口最好的处理方式为上传到文件对象存储服务器,然后给前端返回一个下载文件的URL,前端直接打开链接下载就可以了,但…在下载数据量大且参数复杂的情况下&#x…

服务器不是自己的做违法网站2345浏览器网页版入口

引言 PWM(脉冲宽度调制)是一种常见的模拟控制方式,通过调节脉冲宽度来控制功率输出的占空比,从而实现模拟信号的传输和控制。在许多领域中,PWM都得到了广泛的应用,如电机控制、LED调光、音频控制等。本文将…

宁波网站建设公司代理小程序短链接生成网址

8 / 14【育明教育】中国考研考博专业课辅导第一品牌 官方网站:http://www.doczj.com/doc/e25fb4dad4d8d15abe234eb2.html8《翻译硕士英语》重点考察考生的英语水平,内容包括:词汇语法、阅读理解、英语写作等, 总分 100 分。 二、考…

江西网站建设公司费用html网页设计工具

前言 部署在 Kubernetes 集群中的应用,在升级发布时可能会存在的问题: 1,由于 Kuberneter 底层 Pod 容器生命周期与网络组件生命周期是异步管理的,在升级时如果没有处理好应用优雅退出的问题,就很容易导致 http 访问请…

网站制作 万网wordpress 恢复默认

摘要: 特斯拉公司惨遭“毒手”是因为其Kubernetes平台没有设置密码保护。 点此查看原文:http://click.aliyun.com/m/43609/ 几个月前RedLock公司工作人员发现:数百个Kubernetes管理控制台无需密码即可访问,即直接公开暴露在互联网…

广告网站建设公司域名拍卖平台

linked from http://www.tompda.com/neirong.asp?id809 西门子新款A系列手机   首页 > 新闻资讯 提交 shizhi 2005-2-25  阅读:2739次 10篇评论 西门子公司近日推出了A系列手机,A系列手机作为入门级手机,设计和功能十分简洁和实用。 西门子A70:设…

做车身拉花的网站高端网站建设域名注册

开坑个新系列,主要面向新手,老司机可以忽略。这个系列内的文章将会让你知道如何做到让你写的爬虫在运行的时候速度能像火箭一样快!很多初学爬虫的朋友对于这方面的知识似乎是空白的,甚至还有一些在爬虫岗位上工作了一两年的人也搞…

济南网站优化公司艾乎网wordpress 利用页面搞

首先在simlink中找到HDL CODER 打开红色Blank DUT,进入里面绿色的子系统开始设计系统 例如设计一个正弦信号发生器,里面用到了add、memory、relation operator、switch、constant、cos模块,cos模块选择了cordic算法,使用cordic那…

免费网站推荐货源wordpress 图片 alt

目录 1. Spring 概述 1.1 Spring是什么 1.2 Spring的作用 1.3 Spring IoC是什么 2. Spring 快速入门 3. Spring Bean 3.1 的实例化方式 空参构造器 3.2 的属性注入 全参构造器注入 setter方法注入 策略模式 3.3 注解管理 3.4 注解方式的属性注入 1. Spring 概述 …

jsp网站开发公司wordpress自动超链接

基础知识 NLP-分词器:SentencePiece【参考Chinese-LLaMA-Alpaca在通用中文语料上训练的20K中文词表并与原版LLaMA模型的32K词表进行合并的代码】_sentencepiece 中文训练-CSDN博客 【OpenLLM 008】大模型基础组件之分词器-万字长文全面解读LLM中的分词算法与分词器…

站酷海洛带网站的图片素材

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

乐清住房和城乡建设部网站官网怎么优化网站关键词的方法

Spark 是一个开源的分布式计算框架,旨在处理大规模数据集的快速计算和分析。下面是 Spark 的主要组件及其任务分工的详细介绍: Driver(驱动器):【任务调度】 负责整个 Spark 应用程序的执行和协调。解析用户程序&#…

桂林北站附近有什么好玩的网站设计推广

(第一阶段)问题 5a(3 分) 实现该函数,该函数模拟了完整的 Hog 游戏。球员 交替轮流掷骰子,直到其中一名玩家达到分数。playgoal 您现在可以忽略 Feral Hogs 规则和论点; 您将在问题 5b 中实现它。feral_h…

平面设计类网站有哪些做网站建设公司crm在线的培训服务

文章目录 炸铁路题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题意解析思路CODE 炸铁路 题目描述 A 国派出将军 uim,对 B 国进行战略性措施,以解救涂炭的生灵。 B 国有 n n n 个城市,这些城市以铁路相连。任意两个城市都可以通…

大连网站建设外包公司商丘网络第一媒体

在流媒体项目中字幕显示是不可或缺的一环,一般会有字幕流在视频播放过程中进行显示;不过还有很多情况是从头到尾只在视频的某个区域显示某些文字,例如某个电视台的log;这种也称为字幕,如果想要将这些字符串显示到视频&…

西乡县门户网站宁波市网站排名优化

先贴上关于使用这个日志组件的一些使用方法,等有时间了在吧官方的文档翻译一下吧,现在真是没时间。 Serilog在使用上主要分为两大块: 第一块是主库,包括Serilog以及Serilog.AspNetCore,如果导入后一个的话会自动导入前…

国内虚拟助手网站国外打开网站会不会乱码

参考资料:https://blog.51cto.com/u_11984354/4907646 NO.21-SAP S4 HANA Cloud API接口测试(1)-CSDN博客