摘要: register 使用修饰符register声明的变量属于寄存器存储类型(一般的都默认是存储器存储类型,volatile关键字也是针对这种类型的)。该类型与自动存储类型相似,具有自动存储时期、代码块作用域和内连接。声明为register仅仅是一个请求,因此该变量仍然可能是普通的自动变量。无论哪种情况,用register修饰的变量都无法获取地址。如果没有被初始化,它的值是未定的。volatile volatile告诉编译器该被变量除了可被程序修改外,还可能被其他代理、线程修改。因此,当使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,而不使用寄存器中的缓存的值。比如 阅读全文
posted @ 2012-09-18 21:25 aitao 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 原文:http://coolshell.cn/articles/8275.html 在一个炎热无聊的下午,我突发奇想。我想通过电子邮件的方式对那些我非常感兴趣和非常敬重的程序员问10个问题。准备这10个问题我只花了5分钟,这些都是我个人想问他们的问题,所以,我基本上没想太多要问他们什么。最后两个问题和编程没有什么关系,我就是想问题这些人的一些兴趣爱好。另外,不是每一个人都想回答我的,这是我第一次做“访谈”,所以,我犯了一些错误,一些问题没有得到回答。不管怎么样,我得到了很多很有意思的内容,所以,这对我绝对是一次很有意义的经历。并不是每一个人都回了我的邮件,也并不是每一个人都同意回答我的这... 阅读全文
posted @ 2012-09-18 20:43 aitao 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 这道题很古老了,可别将它和大端转小端混淆了,所谓大端和小端指的是字节序,而这里反转一个字节说的是位序,算法更是不胜枚举,说实话都能达到目的,剩余的就是看看谁的效率更高了,基本上这是一个最难的问题,高手不是能写出最美丽的程序而是能写出既美丽同时效率又是最高的程序,如果一个人写的程序很美丽,很直观,只能说明该程序员对语言掌握的很好,但是语言毕竟只是工具,真正做事的是计算机,只有对计算机很了解,才能写出效率最高的程序,正如文学家的文笔很多不如花季少女,但是花季少女永远也超越不了时代。不管什么样的程序,落实到底层的cpu都是那几样,尽量不要使用跳转,因为会清空流水线,相比之下,跳转的危害在x86机器上 阅读全文
posted @ 2012-09-18 20:23 aitao 阅读(4911) 评论(0) 推荐(1) 编辑
摘要: 直接操作C标准库提供的字符串操作函数是有一定风险的,稍有不慎就会导致内存问题。这周用业余时间写了一个小型的安全字符串操作库,但是测试之后才发现自己的实现有很大的性能缺陷。在Solaris上初步做了一个简单的性能比对,以下是得到的性能数据(以strlen的数据为例):当传入的字符串长度为10时,执行100w次:strlen 执行时间是:32762毫秒my_strlen执行时间是:491836毫秒当传入的字符串长度为20时,执行100w次:strlen 执行时间是:35075毫秒my_strlen执行时间是:770397毫秒很显然,标准库中strlen的消耗仅是my_strlen的十分之一不到,且 阅读全文
posted @ 2012-09-18 19:48 aitao 阅读(2608) 评论(0) 推荐(1) 编辑