C++ 性能静态数组与指向数组的指针

C++ 性能静态数组与指向数组的指针,c++,visual-c++,pointers,C++,Visual C++,Pointers,指针总是比静态数组有一点开销,因为要使用它,首先需要将指针地址加载到注册表中(我说的是汇编) 例如: 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

指针总是比静态数组有一点开销,因为要使用它,首先需要将指针地址加载到注册表中(我说的是汇编)

例如:

   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++。
谢谢

在我看来,你还没有分析过,只是试图过早地进行优化。你怎么知道这样会比较慢?你知道现代CPU是并行执行指令的,所以你不能只计算行数。。。?您是否对其进行了基准测试,并发现其在您的国际象棋项目中具有重要意义?您的评测度量是什么?不管怎么说,几乎没有等效代码-一个数组是32位值,另一个是8位值。我真的很怀疑这是你的程序花费大部分时间的地方。看这句话,你的每一段开头都是矛盾的。如果你的第一句话是真的(通常是真的),那么就没有什么需要修正的了。静态数组做你想做的事情,所以如果可以的话就使用它们。我不确定你还想要什么。我知道你的回答是标准的,在某些情况下我喜欢这些回答,但我不会寻找此类合理的评论/解决方案。我在寻找一些疯狂的想法。都是为了好玩。肯定有人考虑过。无论如何,谢谢你。