关于java代码优化的一些感悟

经历了实验五之后,我体会到了代码优化的好处,同时也了解并使用了用于代码优化的工具,下面简单介绍一下:

1.强大的优化工具——VisualVM

在使用这个工具之前,我真的没有想到这个工具会如此的强大。

使用这个工具之前,我的代码读取老师所给的文件并将文件全部转化为Graph中的数据最快需要一个小时,最慢的一个Graph需要三四个小时,这大大影响了我实验的进度,同时也打击了我做实验的信心。

但是在我使用了VisualVM对代码的时间瓶颈进行分析后,我找到了影响速度的几个关键的代码点,在不影响程序原本的正确性和健壮性的基础上,我将热点代码进行了改进,尽然可以将时间从原本的几个小时缩短至不到20秒,这令我非常兴奋。

2.各种Java自带集合类的性能

因为我在做实验时也就用到的几种集合类,向ArrayList、HashSet、HashMap这是我经常用的。当然我的程序是单线程程序,所以用上面几种集合类不需要考虑线程安全的问题。

在读取文件时,我的程序将文件中的信息转化为具体的Edge对象和Vertex对象,但是当文件变大时,比如老师给的文件有接近40万行数据,这时候Edge对象和Vertex对象的数量是非常多的,如果这时候用ArrayList来存储它们,那么在调用函数(例如contains函数等)时,时间性能会非常差,这是我经历了实验五之后得到的惨痛的教训。

但是如果使用HashSet来存储它们,那么不论数据有多少,在调用函数(例如contains函数等)时基本上对性能没有什么影响,这是因为HashSet是由哈希表支持的,速度是很快的。

以上仅仅是我在实验五过程中的一些感想,并不全面。对于各种Java自带集合类的性能的分析和介绍,推荐下面几篇博客:

1.https://www.cnblogs.com/supersugar/archive/2012/03/20/2408216.html

2.https://blog.csdn.net/sanjiaozhen/article/details/48815745




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值