gpt4 book ai didi

Android Matrix multiplyMM 详解

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:47 28 4
gpt4 key购买 nike

一直想知道有没有人知道

android.opengl.Matrix.multiplyMM

他们可以分享。

.

问的原因是,通过OpenGL ES学习时,该方法被广泛用于各种计算。但是,有 android.renderscript.Matrix4f我发现使用它比使用原始 float[] 数组更自然。问题是,Matrix4f 的 乘法函数使用临时矩阵执行运算,这导致内存效率低下。

解决这个问题的一种方法是创建我自己的 Matrix4f 并自己编写 multiply()。我的基础是 the following example.它可能看起来很糟糕,但为我节省了所有 set()、get() 和循环,从而提高了性能。

但是,我还是不想让 multiplyMM 离开。 In the source你可以读到该方法是原生,因此应该更快地评估(yes?)。这让我再次感到疑惑。

.

因此,有没有人知道:

  1. multiplyMM 的底层算法是什么?它使用临时文件吗?
  2. 用起来会不会比自己写的乘法快?

最佳答案

1)算法是矩阵乘法。这与您在线性代数课上学到的内容相同。 (来源:http://androidxref.com/source/xref/frameworks/base/core/jni/android/opengl/util.cpp)

multiplyMM 是否使用临时对象?是国产的,所以没关系。如果有一个临时变量,它被分配在堆栈上。不涉及 GC,因为它是原生的。

2) 也许吧。仅仅因为它是用 C++ 编写的,并不能使代码执行得更快。为什么?从 Java 领域切换到 native 代码会产生开销,而且这种开销可能超过在 native 代码中执行所带来的性能优势。

尽管如此,还有两件事要牢记:1) 不要过早优化代码,除非您确定这是性能瓶颈;2) 如果您不确定,请进行一些测量。对您的代码进行一些分析以得出正确的结论。

关于Android Matrix multiplyMM 详解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25158347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com