想问老师一个拖拽动画中的性能优化的问题

来源:4-3 jsonp的应用+轮播图数据抓取

李行知

2020-01-15

这是我自己在做项目的时候遇到的问题
有一块canvas的画布,然后现在上面画了一些小方块,通过比对坐标可以让方块被拖拽走
可是性能上感觉一直有点问题。
我使用了chrome的工具看了以下
对于每帧的世界 大概在 50ms到60ms直接
而其中的cpu执行时间只有10ms左右
在前面有很多空闲的时间
这个是为什么呢?
图片描述

图片描述

图片描述

现在我有以下的一些推测
虽然看起来执行时间短
但是因为mousemove不断触发 其实相关的内容执行了很多遍,所以才会导致时间这么长
单个任务的执行时间比如绘制canvas的时间还是太长了

我换了一个小一点的背景图片以后性能就高了一点了
想问的问题是
1、为什么会有这个间隔,这个间隔的时间里面在做啥
2、如何去分析这种不断的交互产生的动画的性能原因,我看很多的博客之类的都是在讨论怎么达到60fps这些东西的时候都是用的定时器,而没有考虑这种不断交互的情况
3、怎么进行有效的优化
4、有推荐的学习fps跟渲染直接的关系的资料吗。。。这里一个比较让我困惑的是,对渲染跟重绘之间的关系了解不足。。。即使做了一些会有重绘的工作,可是页面也不会马上渲染帧,这层关系让我现在感觉有点晕

写回答

1回答

ustbhuangyi

2020-01-15

你用原生的 canvas 做的? 你先试着把问题做到最简单,只是一块画布,画一个方块,然后监听鼠标事件去拖动,看看性能如何。如果没问题肯定就是其它的问题,通过删代码的方式,找到性能瓶颈。

0
4
ustbhuangyi
回复
李行知
要不你提供一个在线访问的 demo 或者是 GitHub repo 我看看
2020-01-15
共4条回复

Vue2.0高级应用教学实战,开发企业级移动端音乐Web App

Vue.js高级知识应用大集合,实战企业级APP,教你搞定组件化开发。

5432 学习 · 3804 问题

查看课程