正在加载图片...
提高性能的十二条建议-7 提高性能的十二条建议-8 ■避免系统调用和动态申请内存 ■只计算必须计算的内容 caDivide (int dividend, int divisor, c如果系统调用或对其他库的调用很费时 发挥创造力来将他们移动到关键段之外 a如果有很多的操作只要商不要余数,可以写两成 个两个函数,一个计算商和余数,另一个只计算 R动态申请内存往往很费时,尽可能提前静 diVide (int dividend, int divisor 态地申请这些内存 int& quotient) 提高性能的十二条建议-9 提高性能的十二条建议-10 ■重复的计算可以只进行一次 采用预处理的方法,提前计算一些重要的 变量,以后用到时可以查表得到 for(int y=0; ysimage height(); y++) for(int X=0: X<image width: X++) for(y=0; y<h; y++)for(x=0; X<w, X++) y'=sin( angle)*x+cos( angle)*y;∥旋转变換 高度和宽度可以只算一次 ARCOS和sin的值被反复计算了,可以预处理 int h= image height 0, w= image width o COSAngle cos(angle), sinAngle sin(angle) for (y=0; y<h; y++) for(y=0; y<h; y++)for(x=0: X<w, x++) for(X=0: X<W, X++) X=COSAngle'x-sinAngle*y, y'= sinAngle*x+ COaNgle *y,∥旋转变换 提高性能的十二条建议-11 提高性能的十二条建议-12 ■在所有适用的数据类型中,选择最简单的 ■避免使用复杂、效率低的对象 a更复杂的数据类型意味着更多的内存占用和更慢 比如STL的 string类虽然可以动态改变长度 的操作 但这种方便是以牺牲某些操作的时间代 ca在可以使用foat时,不用 doubl 价得到的。如果是字符串操作很多的应用 a在可以使用int时,不用foat 假如可以事先知道字符串的最大长度或 ca在可以使用 short时,不用int 可以估界,就使用char[]。 ca在可以用byte,char时,不用 short 在可以使用 unsigned int(short,,char,bye)时 不用 lint int(short,char,byte)提高性能的十二条建议-7 ƒ 避免系统调用和动态申请内存 Z如果系统调用或对其他库的调用很费时, 发挥创造力来将他们移动到关键段之外 Z动态申请内存往往很费时,尽可能提前静 态地申请这些内存 提高性能的十二条建议-8 ƒ 只计算必须计算的内容 ZDivide(int dividend, int divisor, int& quotient, int& remainder); Z如果有很多的操作只要商不要余数,可以写两成 个两个函数,一个计算商和余数,另一个只计算 商 ZDivide(int dividend, int divisor, int& quotient); 提高性能的十二条建议-9 ƒ 重复的计算可以只进行一次 for (int y=0; y<image.height(); y++) for (int x=0; x<image.width(); x++) // ... Z高度和宽度可以只算一次 int h = image.height (), w = image.width (); for (y=0; y<h; y++) for (x=0; x<w; x++) // ... 提高性能的十二条建议-10 ƒ 采用预处理的方法,提前计算一些重要的 变量,以后用到时可以查表得到 for (y=0; y<h; y++) for (x=0; x<w; x++) x’ = cos(angle) * x – sin(angle) * y, y’ = sin(angle) * x + cos(angle) * y; // 旋转变换 Zcos和sin的值被反复计算了,可以预处理 cosAngle = cos(angle), sinAngle = sin(angle); for (y=0; y<h; y++) for (x=0; x<w; x++) x’ = cosAngle * x – sinAngle * y, y’ = sinAngle * x + cosAngle * y; // 旋转变换 提高性能的十二条建议-11 ƒ 在所有适用的数据类型中,选择最简单的 Z更复杂的数据类型意味着更多的内存占用和更慢 的操作 Z在可以使用float时,不用double Z在可以使用int时,不用float Z在可以使用short时,不用int Z在可以用byte、char时,不用short Z在可以使用unsigned int(short, char, byte)时 ,不用int int(short, char, byte) 提高性能的十二条建议-12 ƒ 避免使用复杂、效率低的对象 Z比如STL的string类虽然可以动态改变长度 ,但这种方便是以牺牲某些操作的时间代 价得到的。如果是字符串操作很多的应用 ,假如可以事先知道字符串的最大长度或 可以估界,就使用char[]
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有