如何优化这个?指向数组的指针

时间:2011-03-04 14:11:33

标签: c++ arrays memory pointers bytearray

如何优化此代码? pAmmoOffset是指向字节数组的指针

*pAmmoOffset        = 0x89;
*(pAmmoOffset + 1)  = 0x70;
*(pAmmoOffset + 2)  = 0x04;

4 个答案:

答案 0 :(得分:3)

您是否使用分析器测量了此代码并确定它是瓶颈?如果是这样,很抱歉,但是你无能为力,因为编译器已经尽可能高效。

答案 1 :(得分:1)

您可以尝试在32位平台上一次管道4个字节。 然而,如果尝试手动执行此操作最终会慢于编译器首先生成的内容,我不会感到惊讶。

你正在做的事情就是这么简单。令人怀疑的是,可以采取任何措施来进一步优化这一点,除非您提供的代码不是这样,并且您没有在这些地址中编写编译时常量。

答案 2 :(得分:1)

我几乎没有理由优化您的代码。但是如果你必须,你可以尝试分配这样的值块:
*(int*) pAmmoOffset = 0x08040201;

相当于:
*pAmmoOffset = 0x01;
*(pAmmoOffset + 1) = 0x02;
*(pAmmoOffset + 2) = 0x04;
*(pAmmoOffset + 3) = 0x08;

如果需要,您可以使用int64分配更大的块。

答案 3 :(得分:0)

*pAmmoOffset++ = 0x89;
*pAmmoOffset++ = 0x70;
*pAmmoOffst    = 0x04;

当然,这会修改指针。

此外,如果指针是全局变量,则生成的代码将在每次写入后重新读取。要解决此问题,请将其复制到本地变量并在write语句中使用它。