Optimizing Program Performance--Reucing Procedure Calls

函数调用会增加一些overhead。调用越多对性能的影响越大。

 

所以要尽量减少在loop中的函数调用。

 

如:

例子1

1 /* Move call to vec_length out of loop */
2 void combine2(vec_ptr v, data_t *dest)
3 {
4     int i;
5     int length = vec_length(v);
6
7     *dest = IDENT;
8     for (i = 0; i < length; i++) {
9         data_t val;
10         get_vec_element(v, i, &val);
11     *dest = *dest OPER val;
12     }
13 }

 

例子2

1 data_t *get_vec_start(vec_ptr v)
2 {
3     return v->data;
4 }

1 /* Direct access to vector data */
2 void combine3(vec_ptr v, data_t *dest)
3 {
4     int i;
5     int length = vec_length(v);
6     data_t *data = get_vec_start(v);
7
8     *dest = IDENT;
9     for (i = 0; i < length; i++) {
10         *dest = *dest OPER data[i];
11     }
12 }

 

这个例子中,假设vec_ptr结构中的data数据一个数组。 那在循环中每次去下一个元素的时候,就可以用数组的操作,而不用函数。

 

当然这个方法,对数据结构的封装性有所破坏。 只是作为例子,学习一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值