如何优化此代码? pAmmoOffset是指向字节数组的指针
*pAmmoOffset = 0x89;
*(pAmmoOffset + 1) = 0x70;
*(pAmmoOffset + 2) = 0x04;
答案 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语句中使用它。