多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间

多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间 陈硕Blog.csdn.net/Solstice 自从 Intel Pentium 加入 RDTSC 指令以来,这条指令是 micro-benchmarking 的利器,可以以极小的代价获得高精度的 CPU 时钟周期数(Time Stamp Counter),不少介绍优化的文章[1]和书籍用它来比较两段代码的快慢。甚...
阅读(28481) 评论(12)

用异或来交换两个变量是错误的

用异或来交换变量是错误的 陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice 翻转一个字符串,例如把 "12345" 变成 "54321",这是一个最简单的不过的编码任务,即便是 C 语言初学者的也能毫不费力地写出类似如下的代码: // 版本一,用中间变量交换两个数,好代码void reverse_by_swap(char* ...
阅读(29320) 评论(42)

带符号整数的除法与余数

带符号整数的除法与余数Division of Signed Integers 陈硕 giantchen_AT_gmail_DOT_com 最近研究整数到字符串的转换,读到了 Matthew Wilson 的《Efficient Integer to String Conversions》系列文章。(http://synesis.com.au/publications.html 搜 ...
阅读(22959) 评论(20)

C++ 标准库中的allocator是多余的

C++ 标准库中的allocator是多余的我认为C++的allocator是依赖注入的一次失败的尝试。 C/C++里的内存分配和释放是个重要的事情,我同意,在写library的时候,除了默认使用malloc/free,还应该允许用户指定使用内存分配的函数。用现在的话说,如果library依赖于内存分配与释放,就应该允许用户注入这种依赖。我看到有些C library是支...
阅读(22956) 评论(86)

Build the Hack CPU with Verilog

Build the Hack CPU with Verilog陈硕 2009-04-18http://blog.csdn.net/Solstice  giantchen_AT_gmail.com最近手痒,买了一本《计算机系统要素:从零开始构建现代计算机》http://www.china-pub.com/33880,把书中讲到的Hack CPU用Verilog实现了一把。原书在A...
阅读(9271) 评论(4)

书摘几则

书摘几则 IT革命歌曲 - 我有一把新锤子。 http://yishan.cc/blogs/xin/archive/2006/04/28/473.aspx 中速,豪迈地,RAP (四川话中,‘锤子’好像不是褒义词,当然, 这并不能妨碍我们豪迈的情绪) 我有一把新锤子,问题当成钉子看。 我刚学了屠龙术,猫狗当成龙来宰。 ...
阅读(5611) 评论(11)

借shared_ptr实现copy-on-write

借shared_ptr实现copy-on-write场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个hash表打交道,工作线程只读,背景线程读写,必然要用到一些同步机制,防止数据损坏。这里的示例代码用std::map代替hash表,意思是...
阅读(15181) 评论(36)

以boost::function和boost:bind取代虚函数

以boost::function和boost:bind取代虚函数 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应...
阅读(61364) 评论(62)

Google 开源了自己的 C++ 单元测试框架 : googletest

Google 在美国独立日这一天开源了自己的c++测试框架:googletest  http://code.google.com/p/googletest/这个工具的主要作者是 Zhanyong Wan,他是 Google 测试技术组的软件工程师。googletest 与 CppUnit 相比,有两个特点:1. 使用简单,写 test case 不用分成声明和定义两部分,也不用自己注册 test ...
阅读(13379) 评论(4)

为 bash 添加 auto_cd 功能:如果命令行是一个目录,则进入该目录

某同事喜用ZSH,ZSH有一个auto_cd选项,打开它之后,如果命令行是一个目录,则进入该目录。例如.. 进入上层目录,/etc 进入/etc目录。这样省得敲"cd"了。结合ZSH的auto_pushd功能,可以很方便地在最近使用的目录中跳来跳去。BASH有pushd/popd/dirs,但用起来总不如ZSH那么便捷。我给BASH加上了这个auto_cd功能,用 shopt -s a...
阅读(3712) 评论(2)

谈谈数独(Sudoku)

谈谈 Sudoku (数独) 除特别说明外,本文提到的Sudoku是指9x9的经典Sudoku。本文大量参考了维基百科的相关条目。 Sudoku 介绍 Sudoku 是一种数学游戏,把一个9行9列的棋盘分为9个3x3的方块,在棋盘上填入1~9这九个数字,使得每行(row)每列(column)每块(block)的9个格子内数字不重复。 例如下面是一个填好的Sudoku。 123|45...
阅读(18704) 评论(2)

为perforce添加nothave命令,查找尚未添加到depot中的文件(in Ruby)

以前在使用Perforce时犯过这样的错误:编写了新的文件,忘了添加到 Perforce depot 中就匆匆submit,别人sync下来编译不过,影响团队进度。编写了一个Ruby脚本,用于检查当前client中有哪些文件没有添加到depot中,每次submit之前运行一下 p4nothave,就能知道还有哪些文件没有add进去。另外用 p4nothave | p4 -x - add 可以把这些...
阅读(4603) 评论(0)

LaTeX 中插入中英双语目录

学校的硕士论文要求中英双语目录,即一份中文目录,再有一份独立的英文目录。李树钧的主页有一个解法( http://www.hooklee.com/tex.html ),手法略有些hacking:改造 /@chapter 和 /@sect 等宏 (/chapter 和 /section /subsection 会用到这两个宏)。我用的 ctex 宏包已经重新定义过这两个宏了,因此不能直接用他提供的文件...
阅读(11658) 评论(11)

nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件

在一般的推理规则下,把 5 个 .cpp 文件编译为 5 个 .obj 文件需要调用 5 次 cl.exe,而 Microsoft nmake 支持 batch mode (批模式) 推理规则,只需调用一次 cl.exe 就能编译出这 5 个 .obj 文件,加快编译速度。举例来说,有如下 Makefile:# start of Makefileall: foo1.obj foo2.obj...
阅读(5041) 评论(0)

Ruby的Source Repository终于也换成Subversion了

3天前,Ruby官方网站宣布用Subversion(svn)替换原先使用的CVS作为版本管理软件。http://www.ruby-lang.org/en/news/2006/12/22/cvs-repository-moved-to-svn/ Python在一年多以前已经从CVS迁移到了Subversion,看来这是大势所趋呀。...
阅读(4097) 评论(0)

面试题2:10个靶打中90环的情况有多少种?

中学数学题目:射击训练,每个靶得分为0环到10环(共11种可能),一个人打了10个靶,那么:打中0环的可能只有一种,即每个靶都打种0环。打中100环情况一样,只不过把得分换为丢分。打中1环有10种可能,即第1个靶打中1环,其余的靶打中0环;或者第2个靶打中1环,其余的靶打中0环;……或者第10个靶打中1环,其余的靶打中0环。打中99环情况一样,只不过把得分换为丢分。打中2环有55种可能...
阅读(5872) 评论(0)

面试题1:连续整数之和为1000的共有几组?

 连续整数之和为1000的共有几组?(假设整数非负)这是一道小学数学题。暴力解法,设满足条件连续整数中最小的那个为i,遍历 i in [1, 1000],计算数列 i, (i+1), (i+2), (i+3), ... 的部分和(partial sum),如果部分和等于1000,则输出;如果部分和大于1000,则跳出本层循环。Python 代码:    for i in range...
阅读(11815) 评论(3)

地址空间布局随机化(Address Space Layout Randomization)与缓冲区溢出攻击

记得以前在Linux下做缓冲区溢出攻击的实验,用了两台机器,一台装RedHat 8.0,另一台装RedHat 9.0,发现一个奇怪的现象。RedHat 8.0的栈基地址是固定的,而RedHat 9.0的栈基地址是浮动的。比如对于下面这个程序,RedHat 8.0每次运行的输出是相同的,而RedHat 9.0则不同。int main(){    char buf[256];    printf(...
阅读(9110) 评论(2)

一道Google top coder的850分例题及解答

一道Google top coder的850分例题及解答 原题: 假设有这样一种字符串,它们的长度不大于 26 ,而且若一个这样的字符串其长度为 m ,则这个字符串必定由 a, b, c ... z 中的前 m 个字母构成,同时我们保证每个字母出现且仅出现一次。比方说某个字符串长度为 5 ,那么它一定是由 a, b, c, d, e 这 5 个字母构成,不会多一个也不会少一个。嗯嗯...
阅读(19287) 评论(19)

《代码大全(第2版)》中文版上市, 4 天里首印的10,000册销售一空,加急重印。勘误表持续更新中

2006年3月27日,《代码大全(第2版)》由 Dearbook 全国首发,我订购了几本,3月28日中午就收到书了,效率蛮高的。之后又在 china-pub 订购了几本,3月30日就收到了。这几本书已经全部送出,呵呵。2006年3月30日,本书出版后的第4天,cc2e.com.cn 网站上宣布:首印的10,000册已全部发货,又加急重印了10,000册,前所未遇啊。勘误表:http:/...
阅读(9434) 评论(12)
149条 共8页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:3181757次
    • 积分:24217
    • 等级:
    • 排名:第242名
    • 原创:144篇
    • 转载:3篇
    • 译文:2篇
    • 评论:3300条
    公告
    本人博客的文章均为原创作品,除非另有声明。个人转载或引用时请保留本人的署名及博客网址,商业转载请事先联系。我不使用即时聊天工具。也请不要用 CSDN 站内信、私信、短消息或者留言功能跟我联系。我的 gmail 用户名是 giantchen,微博 http://weibo.com/giantchen。
    陈硕的微博
    最新评论
    g