C\C++\Java字符串拼接比较:

昨天买好小米盒子,自己折腾了一会然后就教会老妈怎么玩,怎么看还珠格格之后,我闲来无事,突然想起了上次一个项目处理字符串遇到的性能问题,然后就仔细考虑了一下,越考虑发现需要注意的越多,于是开了ubuntu虚拟机测试一下(我的host机器是i7 Q740 四核八线程):
C语言版本是直接用strncpy,纯内存字节流操作
C++第一个版本用到了std::string,用append添加字符传
C++第二个版本用到了std::stringstream,直接ss<<"hello"
Java用StringBuilder

结果是:
C语言运行效率奇高无比,2-3秒
C++std::string,速度9秒,如果注释掉sb.reserve(10000)那么就是11秒
C++std::stringstream,19秒
Java的StringBuilder,也是11秒

曾经测试过其他方法,都是超过30秒而被我取消了:
vector<char>,第二个循环里push_back('h');五次
C语言string.h的strcat和strncat

总结:
本来以为Java速度和C++不是一个数量级的,现在看来,貌似Java速度也非常高,反而是C和C++如果代码写的考虑不周到,那么速度会急剧下降的

int main()
{int i,j;int num = 1000000;time_t t1;time(&t1);for ( i = 0; i < num; i++) {char a[10000]="";for( j=0; j<300; j++) {int len = strlen("hello");strncpy(a+j*5,"hello",len);}}time_t t2;time(&t2);printf("%d  %d\n",t1,t2);printf("%d\n",t2-t1);
}int main()
{int num = 1000000;time_t t1;time(&t1);for (int i = 0; i < num; i++) {std::string sb;sb.reserve(10000);//这行代码如果注释掉,那么运行时间是11秒for(int j=0; j<300; j++) {sb.append("hello");}}time_t t2;time(&t2);std::cout<< t1 <<"  " <<t2 <<"\n";std::cout<< t2-t1<<"\n";
}int main()
{int num = 1000000;time_t t1;time(&t1);for (int i = 0; i < num; i++) {std::stringstream ss;for(int j=0; j<300; j++) {ss<<"hello";}}time_t t2;time(&t2);std::cout<< t1 <<"  " <<t2 <<"\n";std::cout<< t2-t1<<"\n";
}
public static void main(String[] args) throws Exception {long t1 = System.currentTimeMillis();int num = 1000000;for (int i = 0; i < num; i++) {StringBuilder sb = new StringBuilder();for (int j = 0; j < 300; j++) {sb.append("hello");}}long t2 = System.currentTimeMillis();System.out.println(t2 - t1);
}

C\C++\Java字符串拼接比较相关推荐

  1. 最优雅的Java字符串拼接是哪种方式?

    title shortTitle category tag description head 最优雅的Java字符串拼接是哪种方式? Java字符串拼接 Java核心 数组&字符串 Java程 ...

  2. java字符串拼接常用方式

    方式一:+ "+",是java操作运算符比较常用的,也是简单直接的一种方式. String aa = "魅言倾馨";String bb = "子非我鱼 ...

  3. java 字符串拼接_JAVA字符串拼接常见方法汇总

    字符串的拼接,常使用到的大概有4种方式: 1.直接使用"+"号 2.使用String的concat方法 3.使用StringBuilder的append方法 4.使用StringB ...

  4. Java字符串拼接“+“

    Java字符串拼接"+" 当字符串之间使用 + 号拼接的时候,系统底层会自动创建一个StringBuilder对象,然后再调用其append方法完成拼接,拼接后,再调用其toStr ...

  5. java字符串拼接_为什么阿里巴巴不建议在for循环中使用quot;+quot;进行字符串拼接...

    点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 字符串,是 Java 中最 ...

  6. Java字符串拼接的五种方法,哪种性能最好?

    作者 | 老坛酸菜WH 来源 | https://www.cnblogs.com/twzheng/p/5923642.html > 字符串拼接一般使用"+",但是" ...

  7. Java 字符串拼接 StringBuilder() StringBuffer

            字符串拼接 普通方式 public class StringDemo2 {public static void main(String[] args) {// 表示获取从1970-01 ...

  8. java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...

    String详解 注意区分对象和对象的引用 首先来看一下我在jdk中找到的String源代码,这里只截取开头的小小一部分 public final class String implements ja ...

  9. Java 字符串拼接的各种玩法

    java中字符串拼接各种方式与执行效率 由于String对象是不可变对象,因此在需要对字符串进行修改操作时(如字符串连接和替换),String对象总是会生成新的对象,所以其性能相对较差. String ...

最新文章

  1. 英特尔公布新技术路线图,将为 AWS、高通代工芯片
  2. IE不能开新窗口的解决方法
  3. 这种事都有?建行网银把Demo版的放上线了?!
  4. 系统学习机器学习之决策树
  5. c语言的那些小秘密pdf下载,C语言的那些小秘密之函数的调用关系.pdf
  6. Winform中创建超链接,点击跳转网页
  7. php判断手机浏览器,php 获取 手机浏览器的信息 | 学步园
  8. Interactive cloth
  9. DataTable克隆行
  10. Qt界面刷新优化的一些心得
  11. dw什么运行php,php新手求助,为什么在DW中设计里能看到运行php程序的结果,但…...
  12. 2017年全国大学生电子设计竞赛综合测评题目解析——2022更新(方波生成,方波分频,三角波,加法器,滤波器,正弦波))
  13. 基于FPGA的卷积神经网络加速器(绪论)
  14. php写poc,0day Poc编写指南(实战篇)
  15. 《进击的虫师》爬取豆瓣电影海报Top250(2020年10月23日更新)
  16. R语言实现并行计算[parallel,Rdsm]
  17. FPGA平台开发基础
  18. 服务器机柜pdu安装位置,机柜电源插座和机柜之间的安装关系
  19. 第六次作业--结队编程第二次
  20. 单元测试的艺术--读书笔记

热门文章

  1. 数据结构与算法入门---数据结构类型
  2. 实验 7:流类库与输入输出
  3. jquery最快速入门文档
  4. git 解决远程和本地冲突
  5. 大页内存(HugePages)
  6. C# Redis实战(七)
  7. JAVA的网络编程【转】
  8. [转载]ZIGBEE:Coordinator中的邻居表(Neighbour Table)问题
  9. f5 会话保持 负载均衡_F5负载均衡配置-运维管理
  10. element table 表格设置max-height 没有出现滚动条,多渲染了一列。