指针在静态数组上总是有一点开销,因为使用它首先需要将指针地址加载到注册表中(我说的是汇编)。
例如:
var_resul = var_dynamic[var_index];
009D13F3 movsx eax,byte ptr [ebp-45h]
009D13F7 mov ecx,dword ptr [ebp-0Ch]
009D13FA mov dl,byte ptr [ecx+eax]
009D13FD mov byte ptr [ebp-51h],dl
var_resul = var_static[var_index];
009D1400 movsx eax,byte ptr [ebp-45h]
009D1404 mov cl,byte ptr [ebp+eax*4-3Ch]
009D1408 mov byte ptr [ebp-51h],cl
有没有办法在c ++中解决这个问题?我正在编写一个国际象棋引擎,每个速度增益都很重要。 我想这需要在运行时动态地更改汇编指令以指向分配的内存区域,但可能存在这样的功能,即使它破坏了代码的可移植性。我正在使用visual c ++。 谢谢!