gpt4 book ai didi

java - Java 中数组的命中计数(读取)

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:31 24 4
gpt4 key购买 nike

为了评估算法,我必须计算读取/访问字节数组项的频率。字节数组填充了文件的内容,我的算法可以跳过数组中的许多字节(例如 Boyer–Moore 字符串搜索算法)。我必须找出一个项目实际被阅读的频率。这个字节数组被传递给多个方法和类。

到目前为止我的想法:

  1. 在读取字节数组的每个位置增加一个计数器。这似乎很容易出错,因为有很多这样的地方。此外,之后我必须删除这段代码,这样它就不会影响我的算法的运行时间。

  2. 使用 ArrayList 而不是字节数组并覆盖其“get”方法。同样,有很多方法需要修改,我怀疑会有性能损失。

  3. 我能否以某种方式使用 Eclipse Debug模式?我看到我可以为观察点指定命中数,但似乎无法输出命中数?!

  4. Reflection API 能否以某种方式帮助我?

  5. 有点像 2),但为了减少工作量:我能否让 Java 方法在需要数组的地方接受 ArrayList,以便在读取项目时透明地调用“get”方法?

最佳答案

可能有现成的解决方案,但我可能只是将字节数组包装在一个简单的类中。

public class ByteArrayWrapper {
private byte [] bytes;
private long readCount = 0;

public ByteArrayWrapper( byte [] bytes ) {
this.bytes = bytes;
}

public int getSize() { return bytes.length; }

public byte getByte( int index ) { readCount++; return bytes[ index ]; }

public long getReadCount() { return readCount; }
}

类似的东西。当然,这确实会影响运行时间,但影响不大。你可以尝试一下,计算差异的时间,如果你发现它很重要,我们就得另辟蹊径。

关于java - Java 中数组的命中计数(读取),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4944975/

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