ISDIGIT算法问题:两次比较与表查找比较谁更快
来源:互联网 发布:华泰证券网络培训学院 编辑:程序博客网 时间:2024/05/16 14:52
在《C++实践之路》[美]Barotsz Milewski书3.5.5中说,表查找比两次比较更快,实测不然,表查找略为更慢一些。
#define ISDIGIT2(c) ( ((c) >= '0') ) // 124800
#define ISDIGIT(c) ( ((c) >= '0') && ((c) <= '9') )//1404000
if (bDig[UCHAR(n)]) isd+=2; //1560010 表查找
if (isdigit(UCHAR(n))) isd+=2; //4056026 MSVCR100.isdigit
全例如下:
int _tmain(int argc, _TCHAR* argv[]){srand(::GetTickCount());BOOL bDig[0xff] ={0};WCHAR szw[MAX_PATH];CHAR sza[MAX_PATH]; FILETIME lpCreationTime, lpExitTime, lpKernelTime, lpUserTime;FILETIME lpCreationTime2, lpExitTime2, lpKernelTime2, lpUserTime2;int isd=0;::GetThreadTimes(::GetCurrentThread(), &lpCreationTime, &lpExitTime, &lpKernelTime, &lpUserTime);isd=0;#define ISDIGIT2(c) ( ((c) >= '0') )//124800for (ULONG_PTR n=0; n <0x3ffffff; n++){if (ISDIGIT2(UCHAR(n))) isd+=2;}::GetThreadTimes(::GetCurrentThread(), &lpCreationTime2, &lpExitTime2, &lpKernelTime2, &lpUserTime2);swprintf(szw, __FUNCTIONW__ L" %d,\t%d, \n", isd, lpKernelTime2.dwLowDateTime -lpKernelTime.dwLowDateTime + (lpUserTime2.dwLowDateTime -lpUserTime.dwLowDateTime ));wprintf(szw);::GetThreadTimes(::GetCurrentThread(), &lpCreationTime, &lpExitTime, &lpKernelTime, &lpUserTime);isd=0;#define ISDIGIT(c) ( ((c) >= '0') && ((c) <= '9') )//1404000for (ULONG_PTR n=0; n <0x3ffffff; n++){if (ISDIGIT(UCHAR(n))) isd+=2;}::GetThreadTimes(::GetCurrentThread(), &lpCreationTime2, &lpExitTime2, &lpKernelTime2, &lpUserTime2);swprintf(szw, __FUNCTIONW__ L" %d,\t%d, \n", isd, lpKernelTime2.dwLowDateTime -lpKernelTime.dwLowDateTime + (lpUserTime2.dwLowDateTime -lpUserTime.dwLowDateTime ));wprintf(szw);::GetThreadTimes(::GetCurrentThread(), &lpCreationTime, &lpExitTime, &lpKernelTime, &lpUserTime);isd=0;for (ULONG_PTR n=0; n <0x3ffffff; n++)if (bDig[UCHAR(n)]) isd+=2;//1560010::GetThreadTimes(::GetCurrentThread(), &lpCreationTime2, &lpExitTime2, &lpKernelTime2, &lpUserTime2);swprintf(szw, __FUNCTIONW__ L" %d,\t%d, \n", isd, lpKernelTime2.dwLowDateTime -lpKernelTime.dwLowDateTime + (lpUserTime2.dwLowDateTime -lpUserTime.dwLowDateTime ));wprintf(szw);::GetThreadTimes(::GetCurrentThread(), &lpCreationTime, &lpExitTime, &lpKernelTime, &lpUserTime);isd=0;for (ULONG_PTR n=0; n <0x3ffffff; n++)if (isdigit(UCHAR(n))) isd+=2;//4056026MSVCR100.isdigit ::GetThreadTimes(::GetCurrentThread(), &lpCreationTime2, &lpExitTime2, &lpKernelTime2, &lpUserTime2);swprintf(szw, __FUNCTIONW__ L" %d,\t%d, \n", isd, lpKernelTime2.dwLowDateTime -lpKernelTime.dwLowDateTime + (lpUserTime2.dwLowDateTime -lpUserTime.dwLowDateTime ));wprintf(szw);getchar();return 0;
}
0 0
- ISDIGIT算法问题:两次比较与表查找比较谁更快
- 几种查找算法总结与比较—顺序查找、有序查找、散列表查找
- 各种查找算法效率比较
- 汇编语言字符串比较与查找
- 查找算法的实现和比较
- 六种查找算法效率比较
- 六种查找算法效率比较
- Java 二分查找算法及效率比较
- hash算法在查找、比较中的应用
- 几种查找算法的比较
- 二分法与hash表的查找性能比较总结
- 分类算法概述与比较
- 排序算法分类与比较
- prim与dijksra算法比较
- 排序算法实现与比较
- KAZE与SIFT算法比较
- 排序算法比较与分析
- Map与List查找性能比较
- javadoc注释方法
- Java网络编程总结(转载)
- PostgreSQL数据库、表空间、角色及用户
- c#之集学习笔记
- Android]Android Studio获取开发版和发布版的MD5和SHA1
- ISDIGIT算法问题:两次比较与表查找比较谁更快
- linux shell 之if-------用if做判断
- 技术代码分析模板
- 优化sql
- C#中 如何通过路径实现文件上传功能
- 多种数据过滤与降维算法
- 函数 数组 指针 三者之间的关系
- 开源一个Java Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了
- 使用PopWindow时距离边界有间隙的解决办法