Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291175
  • 博文数量: 49
  • 博客积分: 3083
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 08:22
文章分类

全部博文(49)

文章存档

2009年(8)

2008年(41)

分类: LINUX

2008-06-24 13:12:32

    前几天大概阅读了sched.c的代码,感觉读代码得花一整块的时间来读,好让脑子里能把各个函数的内容记下,8K多行的代码,阅读的好辛苦。在对sched.c的代码进行阅读的时候,稍微修改了下部分的代码,让其成为我认为性能更加优化的代码。
    现在开始阅读fork.c的代码,大概先把整个文件的结构梳理了下,接着开始从头看代码,由于之前梳理了这个文件的代码结构,在阅读代码的时候感觉方便了很多。在阅读的过程中,我仍然是喜欢对代码进行修改,部分冗余的代码直接被我给修改了,比如729行的for (i = open_files; i != 0; i--),在判断循环结束的时候用了个!=,意思是当i不为0的时候就继续循环,判断的结果应该是使用的一个bool,假如给改成了for (i = open_files; i ; i--),减少了比较的条件,在循环结束时直接俄判断i时候为0就可以了。在bool值中,0是代表的false,而其他的非0数为true。所以这里可以使用i来代替i != 0


可以用以下的代码验证修改的正确性,也可以采用-s -O2的编译选项来查看性能的优化:



/*
*    filename:a.c
*    writer:liuweni
*    purpose:test
*/

#include <stdio.h>
int main(){
    int i=-1;
    for(i = 5 ; i ; i --)
        printf("%d\n",i);
    return 0;
}

/*
*    filename:a.c
*    writer:liuweni
*    purpose:test
*/

#include <stdio.h>
int main(){
    int i=-1;
    for(i = 5 ; i != 0 ; i --)
        printf("%d\n",i);
    return 0;
}

阅读(1693) | 评论(0) | 转发(0) |
0

上一篇:又是一次CET

下一篇:为内核添砖加瓦

给主人留下些什么吧!~~