代码改变世界

glibc的qsort迭代实现源码

2013-07-31 00:51 by Linux开发菜鸟, 1484 阅读, 0 推荐, 收藏, 编辑
摘要:一些通用函数的源码可谓是把性能的优化做到极致,尽管很多时候我们为了可读性不会这样子做,但是某些时候说不定还能用的上,看一下,学学也无妨。 快速排序是一个比较常用到的排序方法,虽然很多时候是被乱用的......平时实现的时候,很多人为了简单,都会用递归实现。看了一下glibc的源码,果然是用迭代实现的,毕竟相对递归,迭代要高效得多。下面将对代码进行解释,一是学一下大神的写法,而是学一下英语,很久没用到了啊...... 在glibc中qsort实现调用了很多层函数,最终调用是下面这个函数:void _quicksort (void *const pbase, size_t total_elems. 阅读全文

C语言除法向上、向下取整

2013-07-21 20:57 by Linux开发菜鸟, 19544 阅读, 0 推荐, 收藏, 编辑
摘要:C语言的math.h头文件中有ceil和floor两个函数: double ceil(double x);float ceilf(float x);long double ceill(long double x);double floor(double x);float floorf(float x);long double floorl(long double x); 上面一个是把一个浮点数向上取整,下面一个是向下取整。于是当整数除法向上取整的时候就会出现这种情况:int a = 10, b = 3, c = 0;c = (int)ceil((float)a / (float)b)... 阅读全文

CentOS获取软件安装包源码

2013-07-21 20:44 by Linux开发菜鸟, 5525 阅读, 2 推荐, 收藏, 编辑
摘要:用Linux的一大好处就是很多软件都是开源的,可以轻松地获得它们的源代码。阅读优秀的源代码是程序员进步的一个很好的途径。下面就介绍一下如何获取CentOS下常用工具的源码。 CentOS、RedHat、Fedora这样系列的操作系统有一个yumdownloader的工具,可以下载安装包及其源码,例如: yumdownloader --source kernel 上面的语句就会下载到包含内核源码的安装包但是我在执行上述语句的时间却出现“No source RPM for XXX”的提示,后来到网上一查,是因为没配置好路径。 要想下载源码包,我们就必须先配置好yum的源码包下载路径,操... 阅读全文