【发布时间】:2010-10-13 14:56:06
【问题描述】:
我有一个组成二维网格的像素数组,我想随着时间的推移左右移动这些像素......但是我想出的循环效率相当低,并且在术语方面不允许进行太多扩展的改变运动。任何关于如何改进我已经拥有的东西的想法都将不胜感激。
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);
}
}
}
编辑:抱歉代码中有错误,中间循环需要为 -10 第一个 for 循环将所有像素向右移动,第二个将它们移回原点然后向左移动,第三个循环然后将它们移动回到原点。
【问题讨论】:
-
你不应该使用浮点数。
-
无限循环是你的第一个问题...
-
目前只是为了简单起见,因为 x 是一个浮点数,并且将被更改。
-
移动需要在执行期间发生,因此很可能会在单独的线程中运行。
-
我知道移动窗口是什么意思。移动一个像素是什么意思?不管它意味着什么,这就是你的周期,而不是循环。
标签: c# loops performance extensibility