作者softwind (software everywhere)
看板C_and_CPP
标题Re: [情报] C/C++ 利用空指标提高程式效率
时间Sun Apr 5 00:34:58 2009
※ 引述《uefang (云飞(想出去玩))》之铭言:
: http://tech.ccidnet.com/art/1081/20060407/500363_1.html
针对他的说法/解释 我的看法是这样:
1. 他没有避免for 循环
2. 本来就没有除了 参数以外的 local variable
或者该说 不是宣告成参数就不占stack
3. 用 *array 不一定比 array[n] access快速
(如果是终止条件的话 可以预先知道 size
mov cx,size; loop 不一定会比较快)
与其说 他有改进 任何一点东西
不如说 因为传array进func 只会传 &(array[0])
所以 使用一个 null 代表 array 结尾 是一个"不得不"的解决方法
1. 避免for-loop 那不如用if+goto
连 mov cx,X; loop 都省了 直接jmp... (如果LD会使flag变化)
2. void print_char( register char** array )
不知道 有没有机会塞进 register
3. *array++ 和 array[idx++] 这两种用法 我也很疑惑
我觉得这边还是要看 asm code 才能确定
gcc 会认出 *to++=*from++, 可是认不出 to[i++]=from[j++];
(会compile出 movsb/w/d 的指令)
(印象中VC刚好相反...)
用pointer和index的速度 C++风格与艺术 的讲法 好像不太一样
说真的 没有使用工具 下去量func的使用时间
要调 效能 嗯嗯嗯...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.166.122.27