【问题标题】:How expensive are matrix multiplications?矩阵乘法有多昂贵?
【发布时间】:2013-04-12 18:41:33
【问题描述】:

我在 Quad 类中编写了几个方法来绘制四边形并进行旋转。

目前,draw sprite 方法就是这样做的——将四边形渲染到屏幕上。

但是,旋转方法会旋转并且也会渲染四边形。

我已经编写了另外几个方法,一个只是旋转但不渲染,另一个渲染例程在进行矩阵乘法时考虑了旋转矩阵。所以,不要这样做:

Quad sprite = new Quad();
Quad sprite.rotate(0,0,45,mMVPMatrix);  //rotate by 45 degrees and render at 0,0

我可以这样做:

Quad sprite = new Quad();
sprite.rotate(45);            //Rotate sprite by 45 degrees
sprite.draw(0,0,mMVPMatrix);  //Render sprite at 0,0

虽然后者在编写我的主要代码时更加灵活,但这确实意味着即使我不想旋转精灵,绘图例程仍然必须采用旋转矩阵并将其与投影矩阵结合。

当我有 50 多个精灵时,这会花费我吗?我知道“更多代码”和“更好的性能”之间总是需要权衡取舍,但实际上,这会是一个大问题吗?

【问题讨论】:

    标签: performance rotation matrix-multiplication


    【解决方案1】:

    先写代码。然后看看性能是否有问题。太多的事情会影响性能,任何人都无法给你一个提示,尤其是没有任何真正的代码(除了你发布的小片段)来判断。

    这里有人说,代码开发最大的罪过是早期优化。您可以在早期花大量时间优化永远不会成为问题的代码。您始终可以在事后进行优化,事后您将获得有关瓶颈所在位置的实际信息,而不是早期优化,这将导致经过调整的代码永远不会成为瓶颈,但现在由于优化而变得不那么可读。

    【讨论】:

    • 谢谢@Pete,我只是想知道如何解决这个问题,但你当然是绝对正确的,过度优化是不好的,所以我会选择第二个选项,并保持另一个处于待命状态,以防进一步出现性能问题 - 谢谢:-)
    猜你喜欢
    • 2010-10-17
    • 2013-03-22
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2016-01-31
    • 2017-03-20
    • 2017-05-25
    • 2010-10-08
    相关资源
    最近更新 更多