0

我目前正在用 Javascript 实现一个模拟器,模拟平台的内存模型相当复杂,所以我通过一组函数进行读写,例如:

var MRead = [];
ReadBiosSpace = function(addr) { return (EnableBios ? BIOS[addr] : ROM[addr]); };
for (i = 0; i <= 0xFF; i++) { MRead[i] = ReadBiosSpace; };
function Read(addr) { return MRead[addr](addr); };

因为显然 Read 和 Write 函数会被非常频繁地调用(每条指令至少一次,主要执行是Operators[Read(ProgramCounter)]())它们对性能非常敏感。

有没有可以做的性能优化?这是最好的方法吗?

4

2 回答 2

1

如果EnableBios不经常更改,那么我能看到的唯一明显的增强是有两个不同的版本,ReadBiosSpace并在每次更改时将适当的版本重新分配给前 256 个位置。

这将避免每次访问这些位置之一时都必须调用三元运算符。

于 2012-11-02T15:42:41.737 回答
1

除了其他答案之外,您还可以使用它:

for (i = 0xFF - 1; i--) { MRead[i] = ReadBiosSpace; };
于 2012-11-02T16:02:10.363 回答