想知道是否有人可以解释我们的绘图代码中这个奇怪的小优化是怎么回事。我们用第二个代码替换了第一个小代码,并获得了巨大的速度提升(4400 滴答声 -> 15 个滴答声,使用秒表类)
// Add all the visible sprites to the list
m_renderOrder.Clear();
foreach (CSpriteInternalData sprite in m_InternalData)
{
if (!sprite.m_bRender) continue;
m_renderOrder.Add(sprite);
}
换成...
// Add all the visible sprites to the list
m_renderOrder.Clear();
renderOrderCount = 0;
for (int i = 0; i < m_numSprites; i++ )
{
if (m_InternalData[i].m_bRender)
m_renderOrder[renderOrderCount++] = m_InternalData[i];
}
我看起来是最简单的小改动,对于速度的如此巨大的提升。任何人都可以帮忙吗?