【发布时间】:2010-02-12 16:29:12
【问题描述】:
作为我们系统模拟的一部分,我正在使用稀疏内存数组对具有 64 位寻址的内存空间进行建模,并保留对象列表以跟踪在内存空间中分配的缓冲区。缓冲区是动态分配和取消分配的。
我有一个函数可以在分配的缓冲区中搜索给定的地址或地址范围,以查看对内存模型的访问是否在分配的空间中,我的第一个剪辑是“搜索所有缓冲区,直到找到匹配项“正在使我们的模拟速度减慢 10%。我们的 UUT 进行了大量的内存访问,这些访问必须经过模拟的审查。
所以,我正在尝试优化。内存缓冲区对象包含起始地址和长度。我正在考虑在对象创建时通过起始地址对对象数组进行排序,然后,当调用检查函数时,对数组进行二进制搜索以查看给定地址是否在开始/结束范围内。
有没有更好/更快的方法来做到这一点?肯定有一些更快/更酷的算法使用堆或哈希签名或类似的,对吧?
【问题讨论】: