亲爱的 PixiJS 开发者
第一件事:感谢 PixiJS!
问题:
在https://pixijs.github.io/bunny-mark/ 上,当我只点击最新版本 (4.5.1) 什么都不做时,我只能得到 18 fps。
这个特定的 BunnyMark 代码有问题吗?
或者是 PixiJS 源码?
还是默认的 100000 有点太乐观了? 我的机器速度非常快,所以我希望 100000 只兔子能平稳飞行/以大约 60fps 的速度飞行。
2,2 GHz Intel Core i7、16 GB 1600 MHz DDR3、Intel Iris Pro 1536 MB。
它与以前的版本相比如何?
是的,它非常乐观,我只见过一次以 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 有深入的了解。
设置的数量会很高:
@bigtimebuddy
它与以前的版本相比如何?
当我点击“v3.0.8”时,我得到了这个:
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 中重写了代码库以使其更易于维护。 核心团队认为,从长远来看,对性能的小幅打击是值得的。
对于我们如何解决这个问题,我有一些建议:
这个问题需要得到解决,然后性能回归需要在未来得到防止
当然我们需要改进性能的基准测试,当然集成到 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 :
由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。
最有用的评论
我不同意这里 bunny-mark 的假设目的是什么。 目标不一定是显示以 60fps 运行的内容。 我们使用它来比较发布/开发的相对性能并作为冒烟测试。 在我们有好的基准测试方法之前,这是我们目前衡量性能影响的最佳工具。 100000 bunny 是故意将渲染器真正推到它会挣扎的地方。 如果我们想炫耀 Pixi 有多快,这不适合这份工作。 我会使用 ParticleCointainer 创作一些东西,正如 ~Ivan~ Mat 建议的那样。
我们知道 v4.1+ 有轻微的性能下降,其中大部分是因为我们在 ES6 中重写了代码库以使其更易于维护。 核心团队认为,从长远来看,对性能的小幅打击是值得的。
对于我们如何解决这个问题,我有一些建议: