在Javascript中优化和实现冗长的函数数组

时间:2012-11-02 15:36:31

标签: javascript arrays function optimization first-class-functions

我目前正在使用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)]()),它们对性能非常敏感。

是否可以进行任何性能优化?这是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

每次访问其中一个位置时,都可以避免调用三元运算符。

答案 1 :(得分:1)

除了其他答案,你也可以使用它:

for (i = 0xFF - 1; i--) { MRead[i] = ReadBiosSpace; };