函数执行结束后,执行很久的有关问题

函数执行结束后,执行很久的问题
本帖最后由 onlyfunboy 于 2014-05-04 12:12:14 编辑
很奇怪的问题:函数结束执行后,为什么消耗那么久的运行时间?

MFC 对话框工程
           class  b
           {
              public:
                 void  b1(const CSting &name);           // 2.000s
                ~b()                                                           // 0.146s
                 {
                     m_WorkBook.close();
                     m_WorkBooks.close();
                     m_ExcelApp.Quit();

                    m_Range.RealeaseDispatch();
                   ……
                   m_ExcelApp.RealeaseDispatch();
                 }
           }
  
            void  xxxDlg::a1(const CString &sname, int index = 1)
          {
                    clock_t  x3, x4;
                    x3 = clock();
                    b bb;
                    bb.b1(sname);                              
                    x4 = clock();
                   // x4 - x3:       2.002s
          }

          void  xxxDlg::a()
          {
                    clock_t  x1, x2;
                    x1 = clock();
                    a1(sname);             
                    x2 = clock();
                   //   x2 - x1:     7.056s
          }

         类b里面封装的是MFC 中COM的Excel表格操作方法,析构函数就是关闭句炳的操作 。
         内存中存储表格用的是c++的vector.
         问题: xxxDlg::a1 执行结束后消耗的时间是(x4 - x3),约2.002s的时间。
                      xxxDlg::a() 执行结束后消耗的时间是(x2 - x1),约7.052s的时间。
                      xxxDlg::a() 执行结束后只调用了b的析构函数一次,而b的析构函数执行时间0.146s。
                      函数a和函数a1,中间的时间差5s是如何产生的?

          
------解决方案--------------------
b bb;的析构函数你没计算进去
------解决方案--------------------
引用: