《深入理解计算机系统》的笔记-第321页

liuh
liuh (平常心,不要急,不要等)

在读 深入理解计算机系统

  • 章节名:第五章 优化程序性能
  • 页码:第321页 2013-02-03 22:14:20
112人阅读

2013-02-03 22:26:54 城北大洋桃有毛

bzero实现里面有个duff 设备,算是应用了循环展开吧,提高并行性,最简单的make -j xx 算是一个应用,另外就是根据cpu个数,启用适当的进程也算是提高并行不?

2013-02-03 22:31:36 城北大洋桃有毛

减少过程调用,我觉得最常见的是用 很多宏去实现一些数据结构的操作,比如链表节点插入,删除,这是用代码量换取了运行时开销吧,另外就是用inline 修饰函数,不论是C++本身的,或者还是GCC自己支持的inline。至于5.6没有感觉,想必是极其讲究的一个优化方法,不懂

2013-02-03 22:31:38 liuh

前两个我查下。最后一个不算,书中是指让“处理器中的功能单元流水线化”,并不是说利用多核。

2013-02-03 22:35:38 liuh

恩 inline还是有必要的。hehe,你没翻过这本书吧,5.6一点都不高深,就是把一个指针引用*dest改成了一个临时变量x,这个临时变量在循环中是可以放在寄存器里的,就省去了访问存储器。只是这些优化在生产代码中真心见得少,所以心生疑惑。

2013-02-03 22:36:12 城北大洋桃有毛

噢,功能单元流水化这个,就是当时很普通的那个cpu指令周期利用率的那个方法吧,这个自己手工做不了吧,是CPU的驱动做的事情吧

2013-02-03 22:41:00 城北大洋桃有毛

噢,翻过几张,这个没有看过,能把优化做到如此真真的地方,应该对计算机的运行指令和流程门门的清楚啊,也许一般程序也用不到这样的去扣性能吧,还不如优化点网络传输的东西

2013-02-03 22:43:35 liuh

我估计现在也就搞嵌入式的,或是那种写出来的程序至少一万个coder会用的,才会揪这个。不过看看蛮好的,啥时候去搞一本看看吧,都出第二版了。我最近在重温


2013-02-03 22:45:07 城北大洋桃有毛

其实循环展开也是提高流水的方法啊,减少了大量的跳转

2013-02-03 22:47:37 城北大洋桃有毛

额,刚才去床下翻了一下,我好像有一本第二版的,忘记了啥时候买的了,囧啊

2013-02-03 22:50:51 liuh

恩 书里的循环展开是指“每次迭代中执行更多的数据操作来减小(平摊)循环开销的影响”。不过“功能单元的流水线化”是指“(功能单元)在一个操作完成前可以开新的操作”,这就要求要并行的操作之间不能相互依赖,于是本书中就搞了一堆临时变量在循环中各存一部分操作结果了。

2013-02-03 23:10:46 liuh

make -j是说起很多个线程,然后把不互相依赖的代码分别编译的意思马?

2013-02-03 23:14:46 城北大洋桃有毛

是滴,编译器可以将build拆分成多个平行的作业,可以独立运行,也可以并行运行,在多处理器系统上可以极大地提高生成速度,也提高了处理器利用率,另外提高了IO的利用效率,编译超大软件比如chrome之流可以试试

2013-02-03 23:35:01 城北大洋桃有毛

记起一个搞笑的事情,看到线上项目有个模块有人用了好几likely unlikely,然后被人加了一条注释 // 不装逼能死么 , 哈哈

2013-02-03 23:39:07 liuh

哈哈,用这种宏确实装比了

2014-01-15 15:04:57 不懈怠的鱼

请问,这个书怎么读啊·?要购买之后才可以读是吗?没有免费的电子书吗?

> liuh的所有笔记(20篇)

说明  · · · · · ·

表示其中内容是对原文的摘抄