java 数组 内存溢出_java - 从字节数组创建列表 - 堆栈内存溢出
发布日期:2021-06-24 17:08:29 浏览次数:2 分类:技术文章

本文共 1393 字,大约阅读时间需要 4 分钟。

在纯Java中,无法神奇地假设一种类型可以变成另一种类型。 顺便说一句,您可以使用Unsafe在HotSpot中执行此操作,但我不认为您可以在Android中使用,这可能是最好的。

您可以通过使用具有本机字节顺序的直接ByteBuffer来加快转换速度。 这样可以最大程度地减少开销,但在Android中不如在HotSpot中快(因为后者可以将其转换为固有方法)

我会花多长时间估算一下

// or use a MappedByteBuffer from a file

ByteBuffer bb = ByteBuffer.allocateDirect(3200).order(ByteOrder.nativeOrder());

while(bb.remaining() > 0) {

float f= bb.getFloat();

}

注意:这不会运行很长时间,甚至无法与本机代码绑定。

ByteBuffer bb = ByteBuffer.allocateDirect(3200).order(ByteOrder.nativeOrder());

for (int i = 0; i < 12; i++) {

long start = System.nanoTime();

bb.clear(); // simulate we have 3200 bytes to read.

int count = 0;

while (bb.remaining() > 0) {

float f = bb.getFloat();

count++;

}

long time = System.nanoTime() - start;

System.out.printf("Took %,d micro-seconds to read %,d float values%n", time / 1000, count);

}

在HotSpot Java 7上打印

Took 960 micro-seconds to read 800 float values

Took 141 micro-seconds to read 800 float values

Took 99 micro-seconds to read 800 float values

Took 101 micro-seconds to read 800 float values

Took 100 micro-seconds to read 800 float values

Took 102 micro-seconds to read 800 float values

Took 115 micro-seconds to read 800 float values

Took 127 micro-seconds to read 800 float values

Took 108 micro-seconds to read 800 float values

Took 79 micro-seconds to read 800 float values

Took 78 micro-seconds to read 800 float values

Took 79 micro-seconds to read 800 float values

转载地址:https://blog.csdn.net/weixin_34007963/article/details/114451849 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python输出到txt随机命名_使用Python从.txt文件中随机生成一个加权词列表
下一篇:python怎么用for循环找出最大值_并行化python中嵌套的for循环以查找最大值

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月04日 17时41分44秒