需要在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可以大幅提高寫入效率。