先附一条我觉得解释很详细的关于达夫设备的链接,:
https://www.cntofu.com/book/25/ex23.md
里面也有案例哦☝
然后是,对于指针,字符复制不太了解的同学,可以先看下面这个简单案例,来理解达夫设备哦
#include <stdio.h>
int classical(int a);
int duff_device(int a);
int main(int argc, char** argv) {
printf("over duff_device %d",duff_device(999999999));
//printf("over classical%d",classical(999999999));
}
int duff_device(int a)
{
register int x=0;
int n=(a)/10;
switch(a%10){
case 0:
do{ x++;
case 9: x++;
case 8: x++;
case 7: x++;
case 6: x++;
case 5: x++;
case 4: x++;
case 3: x++;
case 2: x++;
case 1: x++;
}while(--n>0);
}
return x;
}
int classical(int a)
{
register int x=0;
do{
x++;
}while(--a>0);
return x;
}
然后,分别测试在普通函数下,和达夫设备方式下的速度比较
普通函数:
达夫设备:
用达夫设备的方法来代替for循环和while循环
可以看到这个速度!真的是快了超级多呀!