string 与 c style 字符串的效率测试
无意中看见c++ string与 c char字符串效率的一些争论。
因而就工作中常用到的语句, 自己写了一些比较公平的测试代码, 基本可以看出string 比 c style字符串高效很多。
#include <iostream> #include <windows.h> #include <string> using namespace std; int main() { unsigned int size = 1000000; char * h1 = new char[size]; memset(h1, 'a', size - 1); h1[size - 1] = 0; char * h2 = new char[size]; memset(h2, 'b', size - 1); h2[size - 1] = 0; char * h3 = new char[size]; memset(h3, 'c', size - 1); h3[size - 1] = 0; char * r1 = new char[ 3 * size + 3]; int e = 0; size_t time = GetTickCount(); e += sprintf(r1 + e, "%s", h1); e += sprintf(r1 + e, "%s", h2); e += sprintf(r1 + e, "%s", h3); time = GetTickCount() - time; cout <<"C style1 time is: " <<time <<" ms." << "length: " << strlen(r1) << endl; e = 0; time = GetTickCount(); e = sprintf(r1 + e, "%s%s%s", h1, h2, h3); time = GetTickCount() - time; cout <<"C style2 time is: " <<time <<" ms." << "length: " << strlen(r1) << endl; string r2; string s1(size - 1, 'a'); string s2(size - 1, 'b'); string s3(size - 1, 'c'); time = GetTickCount(); r2 += s1; r2 += s2; r2 += s3; time = GetTickCount() - time; cout <<"C++ style1 time is: " <<time <<" ms." << "length: " << strlen(r2.c_str()) << " size: " << r2.size() << endl; string r3; time = GetTickCount(); r3 += h1; r3 += h2; r3 += h3; time = GetTickCount() - time; cout <<"C++ style2 time is: " <<time <<" ms." << "length: " << strlen(r3.c_str()) << " size: " << r3.size() << endl; return 0; }
测试结果如下:
C style1 time is: 78 ms.length: 2999997
C style2 time is: 79 ms.length: 2999997
C++ style1 time is: 16 ms.length: 2999997
C++ style2 time is: 15 ms.length: 2999997
其中多次测试时发现c++ string给出的时间有时候为0, 可能与string 内部设计相关
string 与 c style 字符串的效率测试相关推荐
- StringBuilder 和 String拼接10万个字符串的速度测试差别太大了
/*** StringBuilder 和 String拼接10万个字符串的速度测试差别太大了* String耗时毫秒: 32693* StringBuilder耗时毫秒: 16*/ public cl ...
- 汇编语言: 从键盘上输入一串字符(用回车键结束,使用 10 号功能调用。)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字。如有,则把 CL 的第 5 位置 1,否则将该位置置 0。
从键盘上输入一串字符(用回车键结束,使用 10 号功能调用.)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字.如有,则把 CL 的第 5 位置 1,否则将该位置置 0. data s ...
- js字符串拼接效率问题
一般来说字符串拼接我们会直接去将String相加,前端一般不考虑效率问题,但是如果数据量大,我们还是要考虑那么亿点点: 这里我们来测试一下字符串拼接和数组拼接后利用join方法生成字符串的效率: 我们 ...
- java 字符串拼接优化_JAVA字符串拼接效率
比较string.stringbuffer.stringbuilder拼接效率 public class MainTest { public static void main(String[] arg ...
- C++风格与C风格文件读写效率测试-vs2015,vs2017
C++风格与C风格文件读写效率测试-vs2015,vs2017 1 void test_write() 2 { 3 const int TEST_SIZE = 100000000; 4 const c ...
- Boost:字符串查找子串测试实例
Boost:字符串查找子串测试实例 实现功能 C++实现代码 实现功能 字符串查找子串测试实例 C++实现代码 #include <string> #include <iostrea ...
- Boost:字符串Predicate的测试实例
Boost:字符串Predicate的测试实例 实现功能 C++实现代码 实现功能 字符串Predicate的测试实例 C++实现代码 #include <string> #include ...
- C++longest common string最长公共字符串的实现(附完整源码)
C++longest common string最长公共字符串的实现 longest common string最长公共字符串实现的完整源码(定义,实现,main函数测试) longest commo ...
- java中String值为空字符串与null的判断方法
Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表 ...
最新文章
- ajaxFileUpload文件上传
- 马斯克雇机器狗勘察火箭爆炸现场,网友:《黑镜》现实版
- mysql Tablespace exists解决
- SSL 数字证书助力电子商务,让您网络购物更安心
- Thread.join()练习
- webstorm git 怎么断开版本控制 webstorm git for windows 禁止 自动运行
- ESP8266烧写时的各种参数设置
- android tls1.2用法,如何添加特定TLSv1.2工作CipherSuits与OkHttp支持 - Android 4.4的奇巧(API 19)...
- SQL 日期格式化处理.sql
- Java内存区域-运行时数据区域
- python强制跳出while循环_python如何跳出while循环
- centos7字体颜色改变_CentOS7.3中设置Shell终端文本外观自定义字体
- Mat拜耳数据邻域转换算法返回Mat对象,16bit三通道
- Legacy(传统)BIOS的历史和不足
- 计算机主机显卡装在哪,电脑显卡在主板上的哪个位置?怎么查看显卡的信息和更新驱动程序?...
- windows xp 打开文件夹慢的解决
- iPhone转Android体验,一直用苹果手机,突然换成安卓是什么体验?网友:差距太大!...
- pytorch官方文档(中文版)
- 网易云音乐下线:什么都想要,什么都别想要
- python语言中、用来安装第三方库的命令_python安装第三方库的方法