如何优化此线条绘制程序? memcpy会更快地工作吗?
void ScreenDriver::HorizontalLine(int wXStart, int wXEnd, int wYPos,
COLORVAL Color, int wWidth)
{
int iLen = wXEnd - wXStart + 1;
if (iLen <= 0)
{
return;
}
while(wWidth-- > 0)
{
COLORVAL *Put = mpScanPointers[wYPos] + wXStart;
int iLen1 = iLen;
while(iLen1--)
{
*Put++ = Color;
}
wYPos++;
}
}
最佳答案
我认为您的意思是说“memset”而不是“memcpy”。替换这段代码:
while (iLen--)
{
*Put++ = Color;
}
与
memset(Put, Color, iLen);
可能更快,但很大程度上取决于您的 objective-c PU,内存架构和遇到的iLen典型值。这不可能是一个大的胜利,但是如果您有时间,我鼓励您衡量替代方案,因为这种练习是真正理解优化的唯一方法。
当然,此memset()使用仅在COLORVAL具有字符大小的情况下才有效。
关于c++ - 画线例程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1154618/