Chinaunix首页 | 论坛 | 博客
  • 博客访问: 196309
  • 博文数量: 42
  • 博客积分: 935
  • 博客等级: 准尉
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 16:57
个人简介

.

文章分类

全部博文(42)

文章存档

2013年(2)

2012年(5)

2011年(35)

我的朋友

分类: C/C++

2011-03-09 20:02:50

   这两天在做公司代码的优化,主要是系统能够改善现有代码中的算法,以达到提高性能的目的。
   今天发现其中一段代码结构:
  
  1. for(unsigned int j = 0; j < rvFeeBill.size(); j++)
  2. {
  3.         if(bItemCounteractFlag)
  4.         {
  5.             for(unsigned int i = (j+1); i < rvFeeBill.size(); i++)
  6.             {
  7.              ...
  8.             }
  9.             
  10.         }

  11.         if(bServCounteractFlag)
  12.         {
  13.             for(unsigned int i = (j+1); i < rvFeeBill.size(); i++)
  14.             {
  15.                 ...
  16.             }
  17.         }
  18.         for(unsigned int i = (j+1); i < rvFeeBill.size(); i++)
  19.         {
  20.             ...
  21.         }

  22.         for(int i = (j-1); i >= 0; i--)
  23.         {
  24.             ...
  25.         }

  26.         for(unsigned int i = 0; i < rvFeeBill.size(); i++)
  27.         {
  28.             ...
  29.         }
  30. }

该如何优化呢?

思路:

数据举例,vector 中存放如下内容(仅取一组):

10、20、30、-100、11、12、13

假如业务上要求:

-100只能先抵11,然后才能抵12,接着抵13,最后依次抵10,20,30

目前代码结构最外层循环次数是最大的;

优化:

将负数取出作为最外层循环... 【待续】

阅读(2514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~