- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一直想知道有没有人知道
他们可以分享。
.
问的原因是,通过OpenGL ES学习时,该方法被广泛用于各种计算。但是,有 android.renderscript.Matrix4f我发现使用它比使用原始 float[] 数组更自然。问题是,Matrix4f 的 乘法函数使用临时矩阵执行运算,这导致内存效率低下。
解决这个问题的一种方法是创建我自己的 Matrix4f 并自己编写 multiply()。我的基础是 the following example.它可能看起来很糟糕,但为我节省了所有 set()、get() 和循环,从而提高了性能。
但是,我还是不想让 multiplyMM 离开。 In the source你可以读到该方法是原生,因此应该更快地评估(yes?)。这让我再次感到疑惑。
.
因此,有没有人知道:
最佳答案
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/
一直想知道有没有人知道 android.opengl.Matrix.multiplyMM 他们可以分享。 . 问的原因是,通过OpenGL ES学习时,该方法被广泛用于各种计算。但是,有 androi
我是一名优秀的程序员,十分优秀!