讨论:Windows 资源管理器在显示文件类型图标时的效率分析,怎样突破效率瓶颈??
最近,我在写一个类似 Windows 资源管理器功能的文件浏览模块时,发现
如下现象:在 windows2000 server 环境下,使用 Windows 资源管理器浏览
系统目录 c:\winnt\system32 中的文件,耗时大约 1000 毫秒,可是,自己
的代码(纯 WIN32 API)完成浏览该目录的文件,却需要时间 3500 - 9000
毫秒。根据分析,时间耗费主要是获取文件类型图标部分,
代码中也就是函数 SHGetFileInfo 部分。我做了如下测试代码:
DWORD WINAPI Test(void)
{
SHFILEINFO mSFI;
DWORD dwStart = GetTickCount();
{
for(int i=0; i<10000; ++i)
{
SHGetFileInfo("C:\\WINNT\\SYSTEM32\\RUNDLL32.EXE",
0, &mSFI, sizeof(SHFILEINFO),
SHGFI_SMALLICON|SHGFI_SYSICONINDEX);
}
}
return (GetTickCount() - dwStart);
}
返回数值大约在 4500 - 5500 之间。
=================================================================
我的机器是 P4-M 1.4G 笔记本