Java性能-如何以高性能将大数组写入磁盘 SD卡?

Java性能-如何以高性能将大数组写入磁盘 SD卡?,第1张

概述在Java中,有没有一种方法可以将大量的整数写入磁盘?我在Android上执行此 *** 作,但找不到与本地C代码接近的方法.生成的文件不必移植到具有不同表示形式的不同机器上,因此从逻辑上来说,只需对基础字节进行批量写入就足够了.但是我不知道如何从Java有效地做到这一点.我尝试搜索网络,并

在Java中,有没有一种方法可以将大量的整数写入磁盘?我在Android上执行此 *** 作,但找不到与本地C代码接近的方法.

生成的文件不必移植到具有不同表示形式的不同机器上,因此从逻辑上来说,只需对基础字节进行批量写入就足够了.但是我不知道如何从Java有效地做到这一点.

我尝试搜索网络,并测试了以下内容:

>序列化-非常慢,符合预期.
>使用NIO-仍然很慢-AndroID跟踪一次显示每个整数一次的 *** 作:

提前致谢

NIO代码:

int[] array = new array[10000000];...raf = new RandomAccessfile(ti.testfilename, "rw");chan = raf.getChannel();MappedByteBuffer out = chan.map(fileChannel.MapMode.READ_WRITE, 0, array.length*4);ib = out.asIntBuffer();ib.put(array);out.force();raf.close();

解决方法:

我对AndroID的实现一无所知,但是在标准Java中,好的老式IO常常胜过NIO.

例如,如果您有字节数组,我认为以下代码应该相对较快:

byte[] bytes = new byte[10000];// ...fileOutputStream out = new fileOutputStream(...);try {    out.write(bytes);} finally {    out.close();}

请记住,这将阻塞直到写入整个字节数组为止.但是您不会说非阻塞行为是否有问题.

您没有提到的另一件事是写入文件时打算如何编码整数.在写入文件之前,您需要在内存中执行编码,但是数组太大可能无法一次全部编码,在这种情况下,您可以以数百K的块进行编码/写入.

总结

以上是内存溢出为你收集整理的Java性能-如何以高性能将大数组写入磁盘/ SD卡?全部内容,希望文章能够帮你解决Java性能-如何以高性能将大数组写入磁盘/ SD卡?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存