我正在解决绑定变量崇拜问题。该问题的一部分要求你实现一个“古老”的通用机器的解释器。我已经实现了他们描述的机器的解释器,现在正在运行大学提供的基准测试程序进行测试。我的这个解释器的C#实现非常缓慢!我使用ANTS性能分析器启动了我的程序,以查看减速在哪里,我可以看到超过96%的时间都被“加载程序”操作占用。
这是我为这个运算符编写的代码:
#12. Load Program.
The array identified by the B register is duplicated
and the duplicate shall replace the '0' array,
regardless of size. The execution finger is placed
to indicate the platter of this array that is
described by the offset given in C, where the value
0 denotes the first platter, 1 the second, et
cetera.
The '0' array shall be the most sublime choice for
loading, and shall be handled with the utmost
velocity.
这是我为这个运算符编写的代码:
case 12: // Load Program
_platters[0] = (UInt32[])_platters[(int)_registers[B]].Clone();
_finger = _registers[C];
break;
整个“通用机器”解释器的源代码在这里。
我应该怎么做才能让它更快?有其他用C编写的实现,可以显著更快地完成整个基准测试。