C++ string类型与 C 风格字符串性能比较

最近在拜读《C++ Primer》,C++ 标准库里的string 类型的确比 C 风格的字符串好用(代码简洁、安全、易读),但是心里总担心其包装好了性能可能会损失,于是就做了下面这个小测试,来比较一下二者的性能,我选取了3个比较常用的字符串操作——开辟内存、复制、比较——循环执行一定次数,统计其所耗费的时间。

下面是C++测试代码:


#include <iostream>
#include <cstring>
#include <string>
#include <ctime>
using namespace std;

int main()
{
	
	/*********  C++ string 类型  **************/
	string str1("hello world. I love C plus plus!");
	size_t cycle = 10000000;	// 循环1000万次
	time_t time1 = time(NULL);	//获取当前时间
	for (size_t ix = 0; ix != cycle; ++ix)
	{
		string str2 = str1;
		if (str1 != str2)
		{
			//do something...
		}
	}
	time_t time2 = time(NULL);	//获取当前时间
	
	//********** C-style string 类型 *************/
	for (size_t ix = 0; ix != cycle; ++ix)
	{
		char * cp = new char[str1.size()];
		strncpy(cp, str1.c_str(), str1.size());	 
		if (strcmp(cp, str1.c_str()))
		{
			//do something...
		}
		delete [] cp;
	}
	time_t time3 = time(NULL); //获取当前时间
	
	//显示
	cout << "C++ string consume time: " << difftime(time2, time1) << " seconds." <<endl;
	cout << "C style string confume time: " << difftime(time3, time2) << " seconds" << endl;
	return 0;
}




运行结果:


第1次运行结果:


第2次运行结果:


第3次运行结果:


结论:就多次运行结果平均来看,C++标准库中的string类型在保持代码简介、安全、易读的同时,还保持了其极高的性能。所以,C++开发中尽量用标准库的string类型来
代替C 风格的字符串。(《C++ Primer》中一直在建议使用标准库,我想大概就是出于此吧~)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值