scala性能测试
主要对比scala 的for, while循环,以及和java for while循环作对比
scala代码
object TestScalaClass {
var maxindex = 100000
def testloopfor(): Unit ={
var beg = System.currentTimeMillis()
var sum = 0
for (i <- 0 to maxindex) {
sum += i
}
println("value " + sum + " 耗时: " + (System.currentTimeMillis() - beg))
}
def testswhile(): Unit ={
var beg = System.currentTimeMillis()
var sum = 0
var i = 0;
while (i < maxindex ){
i+=1
sum += i
}
println("value " + sum + " 耗时: " + (System.currentTimeMillis() - beg))
}
def main (args: Array[String]) {
testswhile()
testloopfor()
运行结果
time1
value 705082704 耗时: 338
value 705082704 耗时: 13
time2
value 705082704 耗时: 271
value 705082704 耗时: 11
time3
value 705082704 耗时: 289
value 705082704 耗时: 10
可以看出在scala 中 for循环比while循环慢接近30倍
java测试代码
long begtime = System.currentTimeMillis();
int i = 0;
int sum = 0;
for (i = 0 ; i < 100000; i++)
sum += i; long endtime = System.currentTimeMillis();
System.out.println("耗时: " + (endtime - begtime) ); // long begtime = System.currentTimeMillis();
// int i = 0;
// int sum = 0;
//
// while(i <100000){
// i++;
// sum += i;
// }
//
// long endtime = System.currentTimeMillis();
// System.out.println("耗时: " + (endtime - begtime) );
在java中,for循环和while循环两者效率相差不大,运行时间集中在1-10之间,平均3ms左右 ,比scala的while循环也快几倍。
scala 测试hashmap
def testhashmap(): Unit ={
print("\n scala hashmap \n")
var buf = new scala.collection.mutable.HashMap[String, String]()
var beg = System.currentTimeMillis()
var i = 0
while (i <= 100000){
buf += (i.toString -> i.toString)
i +=1
}
// for (i <- 0 to 100000){
// buf += (i.toString -> i.toString)
// }
buf += ("11" -> "11")
println(System.currentTimeMillis() - beg)
beg = System.currentTimeMillis()
//buf.foreach(f=>print("key: " + f._1 + "value :" + f._2 + "\t"))
print("\n java hashmap \n")
var javamap = new JavaHashMap[String, String]()
i = 0
while (i <= 100000){
javamap.put(i.toString, i.toString)
i +=1
}
//
// for(i <- 0 to 100000){
// javamap.put(i.toString, i.toString)
// }
// for(i <- javamap.keySet().toArray()){
// print("key:= " + i + " value " + javamap.get(i) + "\t")
// }
println(System.currentTimeMillis() - beg)
}
使用while循环
scala hashmap
216
java hashmap
64
使用for循环
scala hashmap
299
java hashmap
89
while效率相对高点。
scala性能测试的更多相关文章
- scala单元测试,包括功能测试和性能测试
十分简单的scala单元测试 在编写性能要求高的模块的时候,单元测试是有必要的,通过搜索,我找到了一套提供单元功能测试和性能测试的可行方案,该方案简单好用,推荐给大家. 测试工具 首先找到适用于sca ...
- Scala 的确棒
我的确认为计算机学院应该开一门 Scala 的语言课程. 在这篇文章中,我会讲述为什么我会有这样的想法,在此之前,有几点我想要先声明一下: 本文无意对编程语言进行评比,我要讲述的主体是为什么你应该学习 ...
- 学习Scala第一篇-从hello World开始
最近开始系统性的学习scala.其实之前使用过scala的,比如我在用Gatling这款性能测试工具的时候就接触到了scala了.Gatling本身就是用Scala写的,而且Gatling的性能测试配 ...
- Gatling->次时代性能测试利器
Gatling作为一款开源免费的性能测试工具越来越受到广大程序员的欢迎.免费当然是好的,最缺钱的就是程序员了;开源更好啊,缺啥功能.想做定制化的可以自己动手,丰衣足食.其实我最喜欢的原因是其提供了简洁 ...
- 如何利用gatling创建一个性能测试例
[原创博文,转载请声明出处] 基于上一篇博文介绍如何源码编译创建自己的gatling可执行工具,今天介绍一下如何基于gatling做性能测试! 由于gatling的测试例脚本是基于scala写的,所以 ...
- 性能测试工具之Gatling
转载:http://ningandjiao.iteye.com/blog/2004579 Gatling一直是久闻其名但是未得机会运用,正好最近有需求做性能测试,于是趁此机会熟悉了一下,可以说,这是目 ...
- Web Service 性能测试工具比较
背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作, ...
- 快速了解Scala技术栈
http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为 ...
- 两个不同于LR和jmeter的性能测试工具
LR图形界面,更利于使用 jmeter采用java,也能够扩展 相对于上两款工具,下面两款性能测试工具都采用了异步IO模型,扩展性都更强速度也更快 gatling:基于scala,速度相比更快性能压力 ...
随机推荐
- nodejs日志管理log4js
常用的2种配置: 1.按文件大小分片,备份若干数量的文件 var log4js = require('log4js'); log4js.configure({ "appenders" ...
- c#委托、泛型、反射的使用情况
委托:当你传递的参数不是 变量 时,想把一个方法作为参数传递,此时委托就可以做到这点 泛型:当你传递的参数是一个类时,此时用泛型 反射:都说反射是一种耗时的操作,但是却很有用,所以反射他不是拿来滥用的 ...
- Codeforce 609 C—— Load Balancing ——————【想法题】
C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Git使用教程,感觉比较全,所以【转载】
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- JavaScript 监听回车事件
JS监听某个输入框 //回车事件绑定 $('#search_input').bind('keyup', function(event) { if (event.keyCode == "13& ...
- MVC类库视图在UI使用方法
在类库中固定文件:Controller Views 引用一下两个程序集(类库和UI项目都需要引用)(似乎只需要引用mvc的,build似乎在引用文件中不见了?有空测试一下) 如此方式,一个登录需要是 ...
- HashMap和Hashtable存放null
Hashmap是可以放key为null的,Hashtable不能放key为null.hashtable放key为null会报空指针异常 1. hashmap put方法源码 public V put( ...
- 转:ITopologicalOperator Buffer调用异常的解决方法(来源网络)
/// <summary> /// 用拓扑分析求出缓冲区范围. /// 由于ArcGIS的问题,有时调用会出异常,因此需要循环调用 /// </summary> ...
- Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇
效果图镇楼 FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧. ...
- SQL获取本周,上周,本月,上月的开始时间和结束时间
),),--本周 ),),--上周 ),),--本月 ),),--上月 ),),--近半年 ),)--近一年 ), ,, ),)--本周开始时间 ), ,, ),)--本周结束时间 ),,, ),)- ...