Debug和Release下程序性能的“巨大”差异问题

mltong mltong 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
情况是这样的:
Release下,右键菜单弹出一个对话框修改信息。发现需要等待1秒多对话框才出来,有明显的停顿。于是切换到Debug下,嘿,竟然很快,是那种正常的速度,一点也没有迟缓。

到对话框的OnInitDialog函数下(这里有比较多的数据初始化),开头是初始化组合框(CComboBox)_resetCombo(),于是进入_resetCombo(),加了简单的时间测试(已经注释掉的)。代码大致如下:

void CGADDialog::_resetComboBox()
{
// DWORD dwStartTime = GetTickCount();

m_comBox.ResetContent();
CString cstrText;

for(int i = 0; i < m_nMaxGADCount; i++)
{
cstrText.Format(_T("%d"), i);
m_comBox.AddString(strText);
}

m_comBox.LimitText(4);
m_comBox.SetCurSel(0);

// DWORD dwEndTime = GetTickCount();
// cstrText.Format(_T("m_nMaxGADCount = %d, %dms"), m_nMaxGADCount, dwEndTime - dwStartTime);
// AfxMessageBox(cstrText);
}


就是这个函数,发现Release下执行时间大概1200ms,而在Debug下只有100ms的样子。那应该就是这个函数的问题。

那我想是不是组合框的内容太多了(其中成员变量 m_nMaxGADCount 在此时是2000)?

于是单独写了一个对话框测试程序,在OnInitDialog里给组合框添加1万条信息(同样,也全是数字编号的),不管Release还是Debug下,都是很快很正常的速度。

于是,我纳闷了。。。
...全文

相关推荐

评论 26
收藏 已收藏
分享
返回顶部
mltong
VC/MFC 16,550 成员 421,606 内容