Pixi.js: https://pixijs.github.io/bunny-mark/ 慢

创建于 2017-05-14  ·  24评论  ·  资料来源: pixijs/pixi.js

亲爱的 PixiJS 开发者

第一件事:感谢 PixiJS!

问题:

https://pixijs.github.io/bunny-mark/ 上,当我只点击最新版本 (4.5.1) 什么都不做时,我只能得到 18 fps。

screenshot

这个特定的 BunnyMark 代码有问题吗?

或者是 PixiJS 源码?

还是默认的 100000 有点太乐观了? 我的机器速度非常快,所以我希望 100000 只兔子能平稳飞行/以大约 60fps 的速度飞行。

2,2 GHz Intel Core i7、16 GB 1600 MHz DDR3、Intel Iris Pro 1536 MB。

最有用的评论

我不同意这里 bunny-mark 的假设目的是什么。 目标不一定是显示以 60fps 运行的内容。 我们使用它来比较发布/开发的相对性能并作为冒烟测试。 在我们有好的基准测试方法之前,这是我们目前衡量性能影响的最佳工具。 100000 bunny 是故意将渲染器真正推到它会挣扎的地方。 如果我们想炫耀 Pixi 有多快,这不适合这份工作。 我会使用 ParticleCointainer 创作一些东西,正如 ~Ivan~ Mat 建议的那样。

我们知道 v4.1+ 有轻微的性能下降,其中大部分是因为我们在 ES6 中重写了代码库以使其更易于维护。 核心团队认为,从长远来看,对性能的小幅打击是值得的。

对于我们如何解决这个问题,我有一些建议:

  • [ ] 为 Pixi 创建一个更性感、用户友好的性能广告,最好是示例中的内容。 可能有用于切换功能的细粒度控制。 将 bunny-mark 仅作为内部测试工具。
  • [ ] 继续改进 wiki 的性能提示,可能会提供演示
  • [ ] 为 Pixi 实施基准测试,这是一致的衡量标准
  • [ ] 如上所述验证最新版本的性能下降

所有24条评论

它与以前的版本相比如何?

是的,它非常乐观,我只见过一次以 75FPS 处理 100k 多纹理兔子的桌面。 我也有 18 个 :)

尝试运行一个没有多重纹理的版本,有一个按钮。

PIXI针对“一般”游戏进行了优化,但它有很多参数,你甚至可以在pixi架构之上编写自己的超级优化渲染器! 我们有 10000 头动画奶牛(每头约 16 个四边形),在旧显卡和英特尔高清上稳定地保持 30FPS。 极限阶段,CPU 使用率极低:https://www.youtube.com/watch?v=adixpp9CK_A。 改变坐标的对象越多,使用的 CPU 就越多,它可以处理每帧都以足够的 FPS 移动一切的情况。 我希望在一两个月内发布 pixi 的那个分支 :)

这个 fork 会合并到 master 中,让 pixi 再次伟大吗?

Ivan 你使用 Pixi 取得的成就令人印象深刻。 期待看到这个分叉并从中学习。 :)

@jeebus3000不,这将是一个生产分支,它需要对 pixi 和 webgl 有深入的了解。

设置的数量会很高:

  1. 指定您的 json 动画格式如何转换为适合 GPU 的二进制格式。 预定义:只是一个 spritesheet、flash 动画、spine。 都具有不同的设置(每个实例浮动,每个四边形浮动)
  2. pixi-display++:pixi 有Container,也会有Stage、Layer 和Camera。 每个 DisplayObject 都有一个属于某个层的视图,对于极端情况 (gameofbombs.com),每个对象会有多个视图。
  3. updateTransform() 不是每帧都被调用,并且比 vanilla pixi 有更多的延迟更新。 我们不希望在 JS 中调用 10k 元素不在地图上移动时。
  4. 实时地图集和压缩纹理。 当您开发游戏时,您必须查看视频内存中发生的事情以及地图集是如何形成的。 图集在压缩成结果格式之前在纹理打包器中使用特殊设置制作。

@bigtimebuddy

它与以前的版本相比如何?

当我点击“v3.0.8”时,我得到了这个:

screenshot

3.0.9、3.0.10 同上。

在 #4023 报告。

使用 3.0.11 我得到 6fps。

使用 4.0.0 和 4.0.1 我得到 23-24fps。

从这里开始有不断的回归:

使用 4.1.0 和 4.1.1 我得到 20-22fps。

使用 4.2.1 我得到 19-20fps。

使用 4.4.4 和 4.5.1 我得到 16-18fps。

我希望 Pixi 会再次变得更快。

抄送@GoodBoyDigital

@ivanpopelyshev这令人印象深刻! 但是我需要股票 PixiJS 非常快(而且我的用例通常看起来像兔子标记)。

也许可能会有一个测试(总是运行)来检查最新的 Pixi 代码是否与之前版本中最快的一样快(或更快)。

此外,如果这有助于性能,也许应该将兔子标记更改为使用小的单纹理兔子。 对于更大/多纹理(甚至是动画本身)的兔子(默认计数要低得多),可能会有一个选项。 (这些选项需要额外的按钮,目前尚不存在。)

如果毕竟 100000 的默认计数仍然过于乐观,则应该将其更改为明显更低的值,以便当有人被发送到 PixiJS bunnymark(并且它以默认值运行)时,它不会使 PixiJS 看起来很糟糕。 人们应该看到漂亮而流畅的 60fps,而不是当前的低帧率。

@tobireif你只有一个设置:spriterenderer 中的纹理计数。 制作一个 4k x 4k 或 8k x 8k 的大图集,它会比多纹理好得多。

您必须测试您的用户拥有哪些 webgl 设置,没有这些信息就无法进行优化。 例如,我们知道 99% 有 4k 纹理和浮动纹理插件,我们经常使用它,而 vanilla pixi 渲染器没有。

在我的情况下,pixi 就像一个样板,用于适合特定任务的更好的渲染器。

@ivanpopelyshev

spriterenderer 中的纹理计数。 制作一个 4k x 4k 或 8k x 8k 的大图集,它会比多纹理好得多。

如果这有助于提高性能,那么它应该在 PixiJS bunnymark 中实现,对吗?

从版本 4.0.1 到 4.5.1,PixiJS 变得更慢了 ​​- bunnymark 帧率从 23-24fps 变为 16-18fps 。 这个问题需要得到解决,然后性能回归需要在未来得到防止(例如使用 CI 测试)。

在我的情况下,pixi 就像一个样板,用于适合特定任务的更好的渲染器。

我需要“vanilla PixiJS”才能具有极高的性能,我怀疑其他 Pixi JS 用户也能做到。

是的,我们在设置中还需要一个文本字段,比如“texture count:”。 至于 4.0.1-4.5.1 ,我想我们首先要了解它的 CPU 还是 GPU 是我们去优化的。

@tobireif ,这是个好点子! 我们可能应该从更低的地方开始——也许是 1000? 这是一个简单的调整@bigtimebuddy 吗?

关于性能,我们基本上是用更大的灵活性来换取功率。 在当前版本的 pixi 中也有一些对静态内容的偏见(因为大多数东西都不会移动!)

如果您使用粒子容器,Bunnymark 的运行速度会更快:)

但这是一个很好的呼喊,我目前正在开发 v5,我会看看我们是否可以恢复该 fps!

@ivanpopelyshev我在 v5 中恢复到旧的 4.0.0 纹理绑定方式(更少的魔法 - 如果这有帮助,我会徘徊!)

@GoodBoyDigital会有所帮助。 智能纹理绑定仅适用于单一纹理的东西,所有多纹理的使用都是痛苦的。

嘿伙计们,我们将哪个版本转换为 es6? 我知道这有点影响性能!

@GoodBoyDigital

兔印是一回事。 速度快很重要,因为它应该表明 Pixi 很快。 而且因为它是一个性能示例(人们可能会研究和解释其来源),它应该展示所有可能和合理的库用户​​端优化。 并且兔子数量应该仍然是一个令人印象深刻的数字,例如 40000 或 50000(例如,通过此票中提到的改进以及在例如我/伊万的机器上使用 Pixi 版本 5,带来 60fps 的最高数量)。

但是不管兔子标记代码如何,Pixi 本身都需要非常快,我们都同意。

我希望你们都能实现并保持出色的性能!

在当前版本的 pixi 中也有一些对静态内容的偏见(因为大多数东西都不会移动!)

每当我使用 Pixi 时,大多数东西都会移动 😀

如果您使用粒子容器,Bunnymark 的运行速度会更快:)

因此兔子标记代码应该使用粒子容器,对吗?

我目前正在开发 v5,我会看看我们是否可以恢复该 fps!

伟大的! 👍

我不同意这里 bunny-mark 的假设目的是什么。 目标不一定是显示以 60fps 运行的内容。 我们使用它来比较发布/开发的相对性能并作为冒烟测试。 在我们有好的基准测试方法之前,这是我们目前衡量性能影响的最佳工具。 100000 bunny 是故意将渲染器真正推到它会挣扎的地方。 如果我们想炫耀 Pixi 有多快,这不适合这份工作。 我会使用 ParticleCointainer 创作一些东西,正如 ~Ivan~ Mat 建议的那样。

我们知道 v4.1+ 有轻微的性能下降,其中大部分是因为我们在 ES6 中重写了代码库以使其更易于维护。 核心团队认为,从长远来看,对性能的小幅打击是值得的。

对于我们如何解决这个问题,我有一些建议:

  • [ ] 为 Pixi 创建一个更性感、用户友好的性能广告,最好是示例中的内容。 可能有用于切换功能的细粒度控制。 将 bunny-mark 仅作为内部测试工具。
  • [ ] 继续改进 wiki 的性能提示,可能会提供演示
  • [ ] 为 Pixi 实施基准测试,这是一致的衡量标准
  • [ ] 如上所述验证最新版本的性能下降

这个问题需要得到解决,然后性能回归需要在未来得到防止

当然我们需要改进性能的基准测试,当然集成到 CI 中会很棒,当然 Pixi 需要尽可能快。 但我们也需要愿意花时间帮助解决这些非常复杂问题的人。 如果有人在跨不同浏览器/硬件进行性能基准测试方面有特殊经验,欢迎在这里做出贡献!

你呢,@tobireif? 你有这些领域的专业知识吗? 很多改进的机会。 欢迎在这里进行 PR 或努力来分析、创建更好的测试、找到使用 webgl 进行 CI (Travis) 的解决方案、对提交历史进行二分搜索以寻找负面性能贡献。

另外,我想声明 bunnymark 存在于多个版本中,但几个月前我问@bigtimebuddy帮助它,我在制作界面方面很糟糕:) 他已经在其中实现了许多额外的功能,我很高兴现在的样子。

我相信纹理的数量是唯一对基准测试至关重要的任务。

@bigtimebuddy

谢谢你的提问。 我确实有性能优化的经验,但不幸的是,在可预见的未来,我将无法抽出时间直接在 Pixi 上工作。 我希望我在这个(和其他)问题报告中的贡献仍然受到赞赏(他们也需要时间......)

我现在明白“pixijs.github.io/bunny-mark”是用于开发内部性能测试的。

因此,如果我要向某人展示 PixiJS 的出色性能(例如在为特定项目推荐 Pixi 时),我会链接此http://www.goodboydigital.com/pixijs/bunnymark/
(而不是 https://pixijs.github.io/bunny-mark/ )
(虽然未来可能会有额外的性能演示,但我确实喜欢 bunnymark,它的工作令人印象深刻。)

(我认为向潜在的 lib 用户展示性能是第一个/早期 bunnymarks 的初衷,它发布在 GoodBoy 博客文章等中,不仅仅是开发人员内部的。)

顺便说一句, http://www.goodboydigital.com/pixijs/bunnymark/使用 ParticleContainer,但使用较旧的 Pixi 版本。

再次给大家:

感谢 PixiJS!

@GoodBoyDigital

我目前正在开发 v5,我会看看我们是否可以恢复该 fps!

听起来很棒! 好期待😀😀

也许可能会有一个 v5 bunnymark(一个用于展示 Pixi 的性能,就像现有的 v3 bunnymark http://www.goodboydigital.com/pixijs/bunnymark_v3/ )。

你好呀! 由于其不活动,暂时关闭此问题。 如果您希望重新打开此问题,请随时给我们戳一下。 谢谢👍

没问题😀

但是如果每个最新版本总是有一个兔子标记,其唯一目的是展示 PixiJS 令人印象深刻的动画性能(与 PixiJS-lib-developers 使用的冒烟测试兔子标记不同),那就太好了. 链接令人印象深刻的动画演示(例如 bunnymark)在推广 PixiJS 时很有帮助,例如在推文中。 (各自最新的 bunnymark 不应该比以前的慢/应该支持至少与以前的 bunnymarks 相同数量的 60fps 的兔子。它可能会使用 ParticleCointainer。)

如果这在 PixiJS 项目的范围内,请重新打开(或者我们可以将上述内容粘贴到新票证中)。

在这张票中还有各种重要的行,例如“为 Pixi 实施基准测试,这是一致的衡量标准”,作者是 Matt Karl。

相关: https :

由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级