java就该效率低吗?


今天改了一个程序,又特别是前几天看了一篇文章,很有感触。


是用Java写了一个调用人人网API抓取数据的程序,抓取用户资料。


每次从数据库的用户ID表中找出50个(一次API请求最多能调50个)没有资料的用户ID,然后调用人人网API获得资料,然后再插入到用户资料表中。


这个过程要一直循环至用户ID表完为止。


每一次循环体,大约要费3秒的时间,很慢。要抓250万条数据,抓了几乎一整天。



后来在偶然一次调试的过程中,发现在找50个ID时执行了两次SQL语句,而这两句各耗费了一秒左右的时间。


后来果断就把整个程序流程改了。ID不是每次循环都去找50个了,而是一开始就全找出来,就放在内存中(存在一个Long型数组里),然后创建一个ArrayList,每次循环把Long型数组中的一个元素放到ArrayList中,放够50个时调一次API。


速度基本就变成每秒1次了(50次插入,1次调API)。


原先可能要运行一整天的程序,现在几个小时就搞定了。



恰好前两天看到的一篇文章的话,写的很不错。作者说,“虽然Java没有C/C++那么注重效率,但并不代表你可以不去优化她。如果精心去设计算法和程序流程,Java也可以很高效”


说得很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值