我目前正在使用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)]()
),它们对性能非常敏感。
是否可以进行任何性能优化?这是最好的方法吗?
答案 0 :(得分:1)
如果EnableBios
没有经常发生变化,那么我能看到的唯一明显的增强功能是拥有两个不同版本的ReadBiosSpace
,并在每次更改时将相应的一个重新分配给前256个位置。
每次访问其中一个位置时,都可以避免调用三元运算符。
答案 1 :(得分:1)
除了其他答案,你也可以使用它:
for (i = 0xFF - 1; i--) { MRead[i] = ReadBiosSpace; };