深入理解计算机系统读书
读读读告
党振文
编编编编编编编编编编编编编编编写高效的程序需要两活:第一,就是写最好的算法和数据构,第二,就是出能有效化从而编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编成高效可行的源代。而于我来很达到写最
好的算法,因此我必程序的化有一定的掌握。编编编编编编编编编编编编编编编编编编器名使用,器必假不同的指可能会指向编编编编编编编编编编编编编编编编编编编编编编存器中同一个位置,造成了一个主要妨碍化编编编编编编编编编编编编编编编编编编编编
的因素,也可能重限制器生化代机会的旭编编编编编编编编编编编编编编编编编编编编编编的一个方面。妨碍化因素使得我要写一些已与化编编编编编编编编编编编编编编编编编的程序来帮助器,例如编编编编编编C的有些特性如行指运算和编编编编编编编编编编制行强型的能力使得他的化很困有函数的用编编编编编编编编编编编编编编编编编编编编编编编也可能致妨碍化因素,从而无法程序化。编编编编编编编编编编编编编编编编编编编
每元素的周期数,CPE,是多程序都很有用的度量准。编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编编理器的活的序是由控制的,提供了某个率
的律信号,因此率能帮助我了解机器是编编编编编编编编编编编编编编编编编编编编编编如何行程序的。一个程序所需要的可以用一编编编编编编编编编编编编编编编编编编编编个常数加上一个与被理元素个数成正比的因子来描述。编编编编编编编编编编编编编编编循展技使我能用少的循完成算,所以编编编编编编编编编编编编编编编编编编编编编编编编心程序的速度,我就要集中在减少我算的编编编编编编编编编编编编编CPE上。
编编编编编编编编编编编得注意的是除了浮点数乘法以外,于各数据和不同运算的基本上都是同等的。浮点数乘法有很高编编编编编编编编编编编编编编编编编编编
的周期数是由于我基准程序数据中的异常。编编编编编编编编编编编编编编编编编编编编
找出的异常是性能分析和化的一个重要成部分。编编编编编编编编编编编编编编编编编编编编编编编编5.5合并操作的初始:编编编
编5.6改的编编编5.5程序:
编程combine1编用函数vec_length作编for的循的条件,而编编编编编编编编编5.6的combine2在始用了编编编编编编vec_length,并将果了局部量编编编编编编编编编编length,然后for循的条件中使用了个局部量,而个小小编编编编编编编编编编编编编编编编编编编编编编
的改就似的编编编编编编编编编编编编个向量元素消除了大概每10个周期。是一常编编编编编编编编编编编的称代移的化例,的化了消除循的编编编编编编编编编编编编编编编编编编编编编编编编
低效率。但是于会改在哪里用函数或用多少次编编编编编编编编编编编编编编编编编编
的,器通常会非常小心,它不能可靠地编编编编编编编编编编编编编编编编编编编编编编编
一个函数是否有副作用,在的情况下程序必帮助器编编编编编编编编编编编编编编编编编编编编编编式的完成代的移。
而在编5.6中,次迭代循都会用每编编编编编get_vec_element来取下一个编编编编编向量元素,个程太大,因此我可以抽像数据型增加一个函数编编编编编编编编编编编编编编编编编编编编编编编编编编编编get_vec_element,个函数返回数的起始地址。我写出了编编编编编编编编编编编编编编编编编编编编5.9的combine3的程,其中循里没有了函数用,而是直接来数。编编编编编编编编编编编编编编编编编编编编编编编编编编
编5.9编编5.6的改:编编
data_t *get_vec_start(vec_ptr v){return v_data;}
Void comvine3(vec_ptr v,data_t *dest){ int i;
int length=vec_length(v);
data_t *data=get_vec_start(v);*dest=IDENT;
for(i=0;i