在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卡?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)