gpt4 book ai didi

android - 在 Android 中使用二进制文件中数据的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-29 02:10:27 26 4
gpt4 key购买 nike

我有几个用于图像处理的二进制文件,其中数据为浮点形式并且经常使用。计算包括相机拍摄的图像的像素乘法和加法。

目前,文件作为资源存储在/res 文件夹中,每次使用文件时我都使用 DataInputStream,在单个函数中读取和计算数据。

我对在应用程序中使用文件比较陌生,尤其是在 Android 上,所以我想知道是否有更好的做法从文件中获取数据,例如,当我一遍又一遍地使用相同的数据时读取数据并将其存储在数组中还是 SQLite 数据库中更好。这是一个增强现实应用程序,因此处理后的图像需要近乎实时地显示。

非常感谢。

编辑:谢谢 Patthoyts 的回答,但是在另一个问题上,Why people say mmap by MappedByteBuffer is faster? ,我读到不需要使用 MappedByteBuffer,因为我每次都按顺序读取数据。有 Android 经验的人可以告诉我什么时候最好在开始时读取数据并将其存储在大型数组或缓冲区中,或者在每次需要时继续从流中读取数据。总的来说,我有大约 50,000 个浮点值。

最佳答案

您可以在 Android 上使用内存映射文件,这意味着操作系统可以将数据分页到内存中以进行快速访问,直到其他东西需要内存为止。您需要将数据文件从 res/raw 或 Assets 部分复制到数据文件系统,但之后您可以使用 MappedByteBuffer 提供访问权限。例如:

FileInputStream inputstream = context.openFileInput(DATA_FILE_PATH);
FileChannel channel = inputstream.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
buffer.order(ByteOrder.LITTLE_ENDIAN);
IntBuffer intbuffer = buffer.asIntBuffer();

现在使用 intbuffer.get(index) 等访问整数序列。

关于android - 在 Android 中使用二进制文件中数据的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799000/

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