独角兽企业重金招聘Python工程师标准>>>
本文试图记录下对流行的Java、Scala和Go语言多线程并发对比测试,作为未来项目选择开发语言的一个参考。
具体的语言对比测试包括:
1)java+concurrent包;
2)java+AKKA1.3包;
3)java+AKKA2.0包;
4)Scala+AKKA1.3包;
5)Scala+AKKA2.0包;
6) Go+goroutine
比对目标:1、性能对比;2、编码难易程度对比。
测试的例子:
1、对1~N的自然数里面统计有多少个质数。采用的算法是把1~N个自然数划分成多个数据段,然后交给多个子线程去分别累加,最后汇总各个子线程的总数。这样,可以充分利用多核的强大功能来加速程序的统计。从理论上看,这个例子是CPU资源敏感型的多线程例子。CPU资源越多,程序跑的就越快。例如,双核的情况下,程序所花时间是单核的一半左右。
由于我的资源有限,只搞了3个测试环境,如下:
测试环境(一):
1、硬件环境:AMD双核2.8G,4G内存
2、软件环境:winxp,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
测试环境(二):
1、硬件环境:INTEL酷睿双核2.4G,4G内存
2、软件环境:winxp,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
测试环境(三):
1、硬件环境: INTEL酷睿2.4G,4G内存
2、软件环境:MAC OS,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
今早,刚刚完成相关代码编写和初步测试工作。后面还需要把相关的代码部署到3个不同的测试环境里面进行测试,并写出相关的测试报告。
.........................................
测试结果已经出来了,因为太长,就放到下一篇文章里。点击