由于我们的系统仿真的一部分阵列搜索会员,我建模使用稀疏存储阵列,并保持对象的列表来跟踪那些内部分配的缓冲区的64位寻址的存储空间内存空间。缓冲区被动态分配和解除分配。的范围
我有一个函数,在分配的缓冲区内搜索给定的地址或地址范围,以查看对内存模型的访问是否在分配空间中,并且我的第一次切入“搜索所有缓冲区,直到找到匹配“会使我们的模拟速度减慢10%。我们的UUT执行大量的内存访问,必须通过模拟进行审查。
所以,我试图优化。内存缓冲区对象包含起始地址和长度。我正考虑在对象创建时通过开始地址对对象数组进行排序,然后在调用检查函数时,对数组执行二进制搜索,以查看给定地址是否落入开始/结束范围内。
是否有更好的/更快的方式做到这一点?必须有一些更快/更酷的算法,使用堆或散列签名或一些 - 如,对吗?