我正在从Matlab调用Google Protocol Buffers Java API。这个过程进行得相当顺利,但是我遇到了一个性能瓶颈。大部分数据以以下类型的对象返回:
java.util.Collections$UnmodifiableRandomAccessList
实际上它们包含了一系列浮点数。我需要将其转换为Matlab矩阵。目前我发现的最佳方法是调用:
cell2mat(cell(Q.toArray()))
然而,在该代码中,那一行成为了巨大的性能瓶颈。
请注意,我知道FarSounder Matlab解析生成器用于Google Protocol Buffers,但不幸的是,它们非常慢。如下所示是我的问题的一些粗略基准速度(YMMV),速度越快越好:
- Farsounder Matlab:0.03 - 纯Python:1 - 从Matlab调用的Java API(仅解析和提取元数据):10 - 从Matlab调用的Java API(解析和提取元数据和数据):0.25
如果不考虑将java.util.Collections$UnmodifiableRandomAccessList转换为Matlab矩阵的开销,那么从Matlab调用Java API的方法将显得非常有前途。 是否有更好的方法将此Java对象转换为Matlab矩阵? 请记住,返回此类型的方法位于自动生成的代码中。