作者uefang (云飞(想出去玩))
看板C_and_CPP
标题Re: [问题] 程式最佳化
时间Fri Mar 27 21:06:49 2009
※ 引述《Killercat (杀人猫™)》之铭言:
: ※ 引述《dcgkii ()》之铭言:
: : 有没有书籍或网站是专门在讲
: : 程式的最佳化啊?
: : 就是可以使编译後的组语更快?
: 最佳化来讲 "我们能做的"大概就是只有thread opt跟openMP而以了
: 剩下的不是要_asm就是要交给编译器来做
: 有几个最佳化的点我可以聊一下
: 1. 良好的写作习惯
: 能++n就不要n++ 能+=就不要+
: 能一次回圈内做完的就不要分两个回圈(不过这个在最佳化有不少例外)
: 2. 利用一些third party library
: 比方说Intel出的IPP/MKL(恩 效能要用钱来换)
: 3. 买很棒的IDE并且遵照他的作法
: 又是Intel, IC(Intel Compiler)
: 4. OpenMP
: 这个是你可以google的东西,在很多IDE上都有支援
: 效能增加非常可观
: 5. Thread opt
: 这是一个很复杂的议题,thread本身是有最佳化解法的
: 市面上也有些现成的(恩 也有要钱的)library
: 比方说TBB(有免费版本的OpenTBB, http://www.threadingbuildingblocks.org/ )
: Boost本身也有thread pool manager,openMP3.0的task manager
: 原理的话就自己google了,其实除了1以外
: 大多数都是把很多个相同的算式合在一次运算里面做掉以避免浪费
6. 尽量用三元运算式 e1?e2:e3 代替 if else
7. 尽量不要用动态记忆体配置写法 malloc()
8. 尽量用 Bitwise Logical Operator (>>,<<,^,|,&,~)
ps: 乘法可用<< , 除法可用 >>
9. 尽量不要用 / 或 % 运算
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.110.129.63
※ 编辑: uefang 来自: 123.110.129.63 (03/27 21:07)
※ 编辑: uefang 来自: 123.110.129.63 (03/27 21:08)
1F:→ stonehomelaa:不用malloc 那怎麽写程式@@ 03/27 22:06
2F:→ tsaiminghan:new ? 03/27 22:10
3F:推 s864372002:自己测时,三元运算子好像比if else慢耶@@ 03/27 23:29
4F:推 VictorTom:另外推一个, 能用整数算/存的就不要用浮点数来算/存@_@" 03/27 23:45
5F:推 freelancer:可以用alloca 或一些stack based 的container 03/28 02:20
6F:→ freelancer:然後有些时候写C是没有C standard library 可以用的. 03/28 02:21
7F:→ tinlans:.............没有一个是正确的观念。 03/31 01:13