0

我需要制作一个最终可用于编写完整汇编程序的哈希表。

基本上我会有类似的东西:foo 100,

我需要对 foo 进行哈希处理,然后存储 100(命令的地址)。我在想我应该只使用二维数组。只有在记录地址(只是一个 int)或返回地址时,才会访问数组的第二维。在第二维中不会进行搜索。

如果我这样实现哈希表,会不会效率低下?如果效率很低,那么实现表格的更好方法是什么?

编辑:我还没有写任何代码。事实上,我什至不知道我要使用什么语言。我想用 C 编写它,所以这将是一个更大的挑战,但如果我觉得时间紧迫,我可能会用 Java 编写它。

4

2 回答 2

0

由于无法查看任何代码,因此没有理由认为这将是低效的。唯一可能的原因是,如果您预先分配了一堆最终没有使用的内存,但是如果没有看到您想到的算法,就无法判断。

于 2013-01-22T04:26:55.417 回答
0

如果数组中的所有其他 int 都未使用,那么除了内存浪费之外,您将无法很好地使用缓存,因为缓存行将未被充分利用。

但通常我在编写汇编程序时不会担心这些事情,因为它对性能的要求并不高,比如图形或繁重的计算。至少,我不会过早地急于优化。

然而,重要的是要记住,一旦您开始组装自动生成的大量代码(大约 100,000 行汇编)(例如,由编译器从 C/C++ 代码生成),性能将变得越来越重要,因为用户体验(等待时间)下降。届时将有许多优化候选者:I/O、解析、符号查找、生成尽可能短的跳转指令(如果它们可以有多种编码来实现更短和更长的跳转)。表达式和宏也会有所贡献。您甚至可以首先考虑最小化输入汇编代码中的空白和注释。

于 2013-01-22T05:01:33.797 回答