strcmp和==比较
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/cpp_strcmp.html
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <Windows.h> using namespace std;
#pragma comment(lib, "winmm.lib") int StringCompare(){ string strSource = "hello world!";
string strDest = "I am a luck dog!"; LARGE_INTEGER m_liPerfFreq = { };
QueryPerformanceFrequency(&m_liPerfFreq); LARGE_INTEGER m_liPerfStart = { };
QueryPerformanceCounter(&m_liPerfStart); for (int i = ; i < 1e8; ++i)
strSource == strDest; LARGE_INTEGER liPerfNow = { };
QueryPerformanceCounter(&liPerfNow); int time = (((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * ) / m_liPerfFreq.QuadPart);
cout << time << endl; return ; } int CharCompare(){ char str1[] = "hello world!";
char str2[] = "I am a luck dog!"; LARGE_INTEGER m_liPerfFreq = { };
QueryPerformanceFrequency(&m_liPerfFreq); LARGE_INTEGER m_liPerfStart = { };
QueryPerformanceCounter(&m_liPerfStart); for (int i = ; i < 1e8; ++i)
strcmp(str1, str2); LARGE_INTEGER liPerfNow = { };
QueryPerformanceCounter(&liPerfNow); int time = (((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * ) / m_liPerfFreq.QuadPart);//单位精确到毫秒,要是不乘以1000则就是秒
cout << time << endl; return ;
} int _tmain(int argc, _TCHAR* argv[]){ StringCompare();
CharCompare();
return ;
}

去掉10的8次方for循环的影响
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <Windows.h> using namespace std;
#pragma comment(lib, "winmm.lib") int StringCompare(){ string strSource = "hello world!";
string strDest = "I am a luck dog!"; LARGE_INTEGER m_liPerfFreq = { };
QueryPerformanceFrequency(&m_liPerfFreq); LARGE_INTEGER m_liPerfStart = { };
QueryPerformanceCounter(&m_liPerfStart); for (int i = ; i < 1e8; ++i)
;//strSource == strDest; LARGE_INTEGER liPerfNow = { };
QueryPerformanceCounter(&liPerfNow); int time = (((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * ) / m_liPerfFreq.QuadPart);
cout << time << endl; return ;
} int CharCompare(){ char str1[] = "hello world!";
char str2[] = "I am a luck dog!"; LARGE_INTEGER m_liPerfFreq = { };
QueryPerformanceFrequency(&m_liPerfFreq); LARGE_INTEGER m_liPerfStart = { };
QueryPerformanceCounter(&m_liPerfStart); for (int i = ; i < 1e8; ++i)
;//strcmp(str1,str2); LARGE_INTEGER liPerfNow = { };
QueryPerformanceCounter(&liPerfNow); int time = (((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * ) / m_liPerfFreq.QuadPart);//单位精确到毫秒,要是不乘以1000则就是秒
cout << time << endl; return ;
} int _tmain(int argc, _TCHAR* argv[]){ StringCompare();
CharCompare(); return ;
}

windows里
LARGE_INTEGER
QueryPerformanceCounter
QueryPerformanceFrequency
timeGettime
综上所述: 当达到10的8次方这个数量级时,string的相等操作确实是要比strcmp耗时,虽然string的重载的相等操作是memcmp内存的比较,但是之前还是有很多的判断的;
strcmp和==比较的更多相关文章
- Uva 11732 strcmp() Anyone?
strcmp() Anyone? Time Limit: 2000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [Subm ...
- Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解
strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计 ...
- strcmp
C++ Code 123456789101112 int strcmp(const char *dest, const char *source) { assert((NULL != ...
- strlen(); strcpy(); strcat(); strcmp() ---笔记
指针小知识点: int a =10; int *p=&a; int *q=p; //p中保存的是a的地址 int *q=p; //将p的值赋给q 作用是让q也指向a ...
- Strcmp(字符串1,字符串2)函数 Sizeof && strlen() Substr(a,b)
Strcmp(字符串1,字符串2)函数 { strcmp函数是比较两个字符串的大小,返回比较的结果.一般形式是: i=strcmp(字符串,字符串); 其中,字符串1.字符串2均可为字符串常量或变量 ...
- strcmp()&&mb_ereg_replace()&&ereg()
主要记录两个函数,一个是strcmp(),一个是mb_ereg_replace() strcmp() php 5.3 以后字符串和数组比较会返回0 测试代码: PHP <?php $passwo ...
- strcmp函数使用总结
Action() { /********************************* * Author:旺仔 * object:strcmp * date:2015-12-09 * fuc:我输 ...
- strcmp函数的使用
Action() { /********************************* * Author:旺仔 * object:strcmp * date:2015-12-09 ...
- c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
1.编写一个函数实现strlen以及strcpy函数. strcpy函数. 后面的字符串拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首 地址,并且只拷贝到'\0'的位置.原型是 char* m ...
- strcmp传入nil导致崩溃
现象:连接电脑可以正常启动程序,不连接电脑启动程序就崩溃. 崩溃信息: BSXPCMessage received error for message: Connection invalid HW k ...
随机推荐
- eclipse 重构功能。
1. Rename Rename重构的功能就是重命名Java元素.虽然可以通过手动修改文件的文件名或其它Java元素的名称,但这种方式不会更新与此Java元素相关联的引用,用户必须手动查找和此Java ...
- infinitescroll 通过无限制分页(json方式完整代码)
@{ ViewBag.Title = " ";} <style type="text/css"> #infscr-loading { text-al ...
- rysnc,scp与bashrc冲突问题
问题是: scp file user@host:dst失败,user用户的bashrc文件中加入了 sudo su -,自动切换到root用户. 症状是输入密码验证失败. rsync, scp是传输文 ...
- 萬用表檢測MOS管好壞的簡便方法
在開發LED驅動電源時難免不會接觸到MOS管,它又是一個相當脆弱的器件.往往有時故障就是因為它罷工了.以下的一點經驗希望對大家有所幫助. 1.用黑表筆接在D極上 ,紅表筆接在S極上 , 一般有一個5 ...
- 深入研究 Win32 结构化异常处理(好多相关文章)
摘要 就像人们常说的那样,Win32 结构化异常处理(SEH)是一个操作系统提供的服务.你能找到的所有关于 SEH 的文档讲的都是针对某个特定编译器的.建立在操作系统层之上的封装库.我将从 SEH 的 ...
- (?m) 可以让.去匹配换行
<pre name="code" class="html"># User@Host: zjzc_app[zjzc_app] @ [10.171.24 ...
- static用法一
#include "stdafx.h" #include "string.h" struct student { int num; ]; char sex; } ...
- 【动态规划】Codeforces 706C Hard problem
题目链接: http://codeforces.com/contest/706/problem/C 题目大意: n(2 ≤ n ≤ 100 000)个字符串(长度不超过100000),翻转费用为Ci( ...
- 尚学堂 JAVA Day3 概念总结
java中的运算符 1.算术运算符 + - * / % Arithmetic operators + 运算符有三种身份 Additive Operator 1)加法:如 a + b; 2)连接:如 “ ...
- HTTP学习笔记1-基本定义
1,HTTP(Hypertext Transfer Protocol)超文本传输协议,http是TCP/IP协议的一个应用层协议:从1990年开始就在www上广泛应用,是现今在www上应用的最多的 ...