高!最全面经典的轮流策略实现技巧

1307 人浏览 | 时间: 2015-06-27 01:04:41 | 作者: codexia

    为了实现双缓冲机制,需要在内存使用两个数组,然后轮流切换使用。因为此轮流切换在循环内部执行,而循环会涉及大量的循环,因此在循环中对效率是非常注重的。稍有疏忽,性能大打折扣。
而实现双缓冲,则需要使用两个数组。在循环中,先操作第一给数组,然后切换到第二个数组,这样就随着循环的索引不断的递增,可以不断的切换。这里只讨论这个轮转模型,双缓冲就是典型的两个元素的轮转实现,外加一些同步控制而已。
我们对于此类问题,通常会想到,用一个布尔变量模型来做两个元素的切换。我们先只是讨论两个元素的。然后再加以扩展。

    对于初学者或者经验不足的朋友来讲,一开始想到的是用布尔变量,比如代码如下:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(bIsDo == true)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    再有一点基础的就是稍微调整一下代码,说明他注意到一个编程代码习惯,防出错:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(true == bIsDo)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    然后再有一点经验的人,理解稍微深一些,就简化了代码。因为布尔值本来就是对错,加入==判断,多此一举。然而对于很多初学者,为了一眼看去是什么意思,就加了==判断。代码如下:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(bIsDo)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    这样写语法确实没有错。我们不能说什么。然而有时候对于效率来讲,是非常重要的。因此,上面的代码看上去没什么,实则对效率大打折扣。没经验的人也想不出能如何改进了。
    而这种轮转的策略,就是状态的反转,仅此而已。因为这个是两个元素的,不需要其他的考虑。这样的反转代码也很简洁。然而有些装逼的写出了如下代码:

请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0