需要在List Control中写入大量数据,为了测试写入效率编写了如下小程序测试写入时间
//List Control写入时间测试
CString str = _T("1234567890");
LONGLONG t1,t2;
LONGLONG persecond;
//查询系统一秒钟的频率
QueryPerformanceFrequency((LARGE_INTEGER *)&persecond);
QueryPerformanceCounter((LARGE_INTEGER *)&t1);
m_list.SetRedraw(FALSE);//对比隐去前后效果
for (i = 0; i < 10000; i++)
{
m_list.InsertItem(i, str);
}
m_list.SetRedraw(TRUE);//对比隐去前后效果
QueryPerformanceCounter((LARGE_INTEGER *)&t2);
double time = (double)(t2 - t1)/persecond;
str.Format(_T("%.10f"), time);
m_list.InsertItem(0, str);
return;
一次写入10000行数据,写入完成后将用时时间写入第一行。
不加入m_list.SetRedraw()函数,用时大概在1.5s左右;
加入m_list.SetRedraw()函数,用时大概在0.13s左右。
可见在大量更新List Control的情况下,加入SetRedraw可以大幅提高写入效率。