gpt4 book ai didi

java - AIR Java 扩展中的 vector 传输速度

转载 作者:行者123 更新时间:2023-12-02 05:29:34 25 4
gpt4 key购买 nike

我正在开发一个针对 Android 操作系统的 AIR 应用程序,使用 flex 4.6.0 + AIR 14.0 sdk。应用程序通常做的是获取包含 2048 个元素的数字 vector ,然后使用算法从给定 vector 生成一个数字,然后根据结果进行一些绘图 - 每 100 毫秒重复一次该过程

问题是,上述算法的性能没有我想要的那么好,它通常在 50ms 到 100ms 之间工作,但在某些情况下甚至可以超过,我有大约 50-60ms 的处理时间。因此,我尝试制作 Java native 扩展来执行复杂的计算,因为我认为它会比 as3 更快(我读到 C 快了 10 倍,但 C 扩展仅在 iOS 上可用)。让我遇到问题的是扩展的速度,因为它看起来慢得多,而扩展应该用于加快速度。

奇怪的是,如果我调用扩展并返回数组长度,它会在 1-2ms 内完成,但是当我将所有数组元素从 AS3 对象复制到 Java double[] 时,它需要大约 700-800ms,这就是困扰我。我以为扩展Java方法启动时所有数据都会传输,但为什么然后调用

args[0].getElementAt[0].getAsDouble()

2048持续了这么久,我做错了什么吗,有人知道空中和分机之间的数据传输详细是如何工作的吗?或者如果有人知道更好的方法来解决这个问题,我将非常感激。

这里有一些有用的链接 Android extension API referenceExtension code tutorial - 我根据本教程做了所有事情,但它比我的代码简单得多,所以我发布了这个。

最佳答案

似乎我找到了有关从 AIR 到 Android 扩展的传输速度问题的答案,但它仍然没有解决我的问题。

数组的传输需要一些时间,因为它是通过 FREObject 类完成的,我通过从数组生成 CSV 字符串并将该字符串传递给扩展来优化这部分。如果我只读取扩展名中字符串的长度并返回结果,则它会在几毫秒内完成。

但是,将字符串转换为 double 型需要花费大量时间。我知道 parseDouble() 的 Java 实现很慢,所以我尝试了一些我发现的其他库,速度有所提高,但仍然超过 150 毫秒。因此,问题似乎出在 Java 部分,这是我最意想不到的。解析 long 和 int 应该要快得多,经过一些测试后似乎确实如此,因此我将尝试看看是否可以使用这些类型。

关于java - AIR Java 扩展中的 vector 传输速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681397/

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