pixi与lottie-web的benchmark测试
生产版本
"dependencies" : { "lottie-web" : "^5.5.7" , "pixi-spine" : "^1.5.23" , "pixi.js" : "^4.8.8" } |
讲座项目对资源做对比
ps:测试网络环境:fast 3g
库
|
gzip大小
|
打包使用的资源
|
资源数
|
加载方式
|
绘制
|
FP |
onload
|
---|---|---|---|---|---|---|---|
pixi&pixi-spine | 34.08+77.04 = 121.12kb | 147kb | 4 |
xhr |
webGL/canvas | 1409ms | 15147ms |
lottie-web |
61.5kb | 291 +41 = 332kb | 30 | 非xhr | canvas/svg | 1416ms | 13978ms |
pixi
Pixi 是一个相当完善的基于 WebGL 的 2D 渲染层,对不支持 WebGL 浏览器可采用 Canvas 垫背(2D WebGL renderer with canvas fallback)。
设计理念 Pixi.js的设计理念很多程度来源于它的定位,只做渲染器,要把渲染功能做到最强。而这样的定位,则会让Pixi.js成为其他引擎的渲染内核。Pixi.js中的显示架构完全参考Flash设计,所有显示对象组合为一个树状数据结构,但内部已针对WebGL渲染方式进行过优化,上层使用起来和Flash并无太大差别。
业界使用
Phaser并没有自己的渲染内核,而是直接引用了Pixi.js。
渲染压力测试
测试内容为同屏渲染对象数量相同的情况下进行帧频数据对比,为了保证测试的公平性,我使用同一台电脑,相同版本的Chrome浏览器进行测试,游戏场景尺寸均为800*600,显示的图片也为同一张。
100、300、500、600、1000、2000、3000个显示对象渲染。
电脑配置
库/显示对象数量
|
100
|
300
|
500
|
600
|
1000
|
2000
|
2500
|
3000
|
---|---|---|---|---|---|---|---|---|
pixi | 60 | 60 | 60 | 59.9 | 59 | 35 | 32 | 28 |
lottie-web(canvas) | 55 | 40 | 36 | 24 | 10 | - | - | - |
lottie-web(svg) | 40 | 25 | 10 | - | - | - | - | - |
结论
对与显示对象小于600的,pixi与lottie在可接受范围内,对于大于600个渲染对象的项目,需要使用pixi
对于小于100个显示对象的,三种渲染方式都可行,但pixi要优于lottie-web
测试代码
require('pixi.js') var renderer = PIXI.autoDetectRenderer(800, 600, { backgroundColor: 0x1099bb }); document.body.appendChild(renderer.view); var stage = new PIXI.Container(); var texture = PIXI.Texture.fromImage('./lottie-assets/images/img_0.png'); var tnum = 1000; console.log("render Object Number:", tnum); var bunnys = []; for (var i = 0; i < tnum; i++) { var bunny = new PIXI.Sprite(texture); bunny.position.x = Math.random() * 800; bunny.position.y = Math.random() * 600; stage.addChild(bunny); bunnys.push(bunny); } animate(); function animate() { requestAnimationFrame(animate); for (var i = 0; i < tnum; i++) { // bunnys[i].rotation += 0.1; }
renderer.render(stage);
}
import lottie from 'lottie-web' animate(); function animate() { requestAnimationFrame(animate);
lottie.loadAnimation({
container: document.body, // the dom element that will contain the animation
renderer: 'canvas',
loop: false,
autoplay: true,
path: './lottie-assets/data1.json' // the path to the animation json
});
var timer = null;
clearTimeout(timer)
timer = setTimeout(function () {
lottie.destroy();
},2000)
}
pixi与lottie-web的benchmark测试的更多相关文章
- 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法
本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...
- Huxley 是一个用于Web应用 UI 测试的工具
Huxley 是一个用于Web应用 UI 测试的工具,由 Pete Hunt 和 Maykel Loomans 用 Python 开发. UI 测试比较令人头疼. UI测试不好写,而且很容易失效: ...
- Web网站压力测试工具
使用Microsoft Web Application Stress Tool对web进行压力测试 不错关于压力测试博客: http://blog.sina.com.cn/s/blog_5155e8d ...
- Web服务器压力测试一例
近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...
- Selenium也是一个用于Web应用程序测试的工具
Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite ...
- ref:Web Service 渗透测试从入门到精通
ref:https://www.anquanke.com/post/id/85910 Web Service 渗透测试从入门到精通 发布时间:2017-04-18 14:26:54 译文声明:本文是翻 ...
- Web应用扫描测试工具Vega
Web应用扫描测试工具Vega Vega是Kali Linux提供的图形化的Web应用扫描和测试平台工具.该工具提供代理和扫描两种模式.在代理模式中,安全人员可以分析Web应用的会话信息.通过工具 ...
- Web应用渗透测试框架Arachni
Web应用渗透测试框架Arachni Arachni是一款Ruby语言编写的Web应用渗透测试框架.当用户指定目标后,该框架可以自动扫描网站页面,对页面中的链接.表单.Cookie.HTTP He ...
- 三种web性能压力测试工具
三种web性能压力测试工具http_load webbench ab小结 题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://w ...
随机推荐
- 图解git中的最常用命令
图解git中的最常用命令 Git命令参考手册(文本版) git init # 初始化本地git仓库(创 ...
- KVC、KVO 理解
参考经典链接: https://www.jianshu.com/p/f8198ca5e682 https://www.jianshu.com/p/be80318115a7 一. KVC 1.KVC介绍 ...
- Redis在windows下的环境搭建
Redis在windows下的环境搭建 下载windows版本redis,,官方下载地址:http://redis.io/download, 不过官方没有Windows版本,官网只提供linux版本的 ...
- rpmbuild - 构建 RPM 打包
SYNOPSIS 构建打包: rpmbuild {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [rpmbuild-options] SPECFILE ... rpmbuild {-ta| ...
- 大数据之hadoop框架知识
https://blog.csdn.net/zytbft/article/details/79285500
- python之pandas模块高级用法
一 agg,聚合,可以使用内置的函数 >>> import pandas as pd >>> import numpy as np >>> pp ...
- ISO C 字符串创建算符 “#”
使用用途: #define doit(name) pr_limits(#name, name) doit(RLIMIT_CORE); 这将由C预处理程序扩展为: pr_limits("RLI ...
- 存储系统设计——NVMe SSD性能影响因素一探究竟
目录1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD——多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3. ...
- spring-boot和redis的缓存使用
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.Maven Plugin管理 pom.xml配置代码: <?xml versio ...
- nofollow标签的作用 nofollow标签添加方法
这篇文章主要介绍了nofollow标签的作用 nofollow标签添加方法,需要的朋友可以参考下 nofollow标签的作用 nofollow标签添加方法 模拟搜狗蜘蛛 nofollow标签 ...