函数执行结束后,执行很久的有关问题
函数执行结束后,执行很久的问题
很奇怪的问题:函数结束执行后,为什么消耗那么久的运行时间?
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;的析构函数你没计算进去
------解决方案--------------------
很奇怪的问题:函数结束执行后,为什么消耗那么久的运行时间?
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;的析构函数你没计算进去
------解决方案--------------------