提高循环效率/可扩展性

时间:2010-10-13 14:56:07

标签: c# loops performance extensibility

我有一个构成2D网格的像素数组,我希望随着时间的推移左右移动这些像素......但是我想出的循环效率相当低,并且不允许进行大量扩展。改变运动。关于如何改进我已经拥有的任何想法将不胜感激。

while (true)
{
  for (float i = 0; i < x; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(10, 0);
    }
  }
  for (float i = 0; i < x * 2; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(-10, 0);
    }
  }
  for (float i = 0; i < x; i++)
  {
    foreach (Pixel p in pixels)
    {
      p.move(10, 0);
    }
  }
}

编辑:抱歉在中间循环需要的代码中出现错误 - 第一个for循环将所有像素向右移动,第二个将它们移回原点然后向左移动,第三个循环然后移动它们回到原点。

2 个答案:

答案 0 :(得分:1)

您可以在实际使用像素的代码中使用偏移量变量。然后通过改变偏移量来完成移动像素,这是一行代码。

答案 1 :(得分:0)

你不能只使用一个循环并使用int吗?三个循环似乎是多余的

使用从0到x * 2的一个循环,并在x值

上执行选择移动

这样的东西
for(int i = 0; i < x * 2; i++)
{
    foreach(Pixel p in pixels)
    {
        if (i < x)
        {
            p.move(0.1, 0);
            p.move(10, 0);
            p.move(10, 0);
        }
        else
            p.move(10,0)
     }       
}