本节的重点将采用原生java,tbs和xxl-job三个模型来测试处理50万业务数据,总结他们的差异,向读者朋友们展示为什么作者称tbs为性能怪兽。
本节以实际对比运行结果展示tbs的运行效率,模拟交易明细汇总,条件如下:
数据量:30w
计算逻辑:按账户号分组计算收入金额与支出金额,每500条记录汇总一次更新数据库。
硬件:4核3.3GHZ,16GB内存单机,Windows 7 专业版,4线程模拟4分片计算。
本节DEMO下载地址:点击下载1、纯java实现计算结果如下:
总计耗时:1445.208秒2、tbs实现计算结果如下:
先解释上图配置以保证公平性:
a)任务采用处理休眠模式,但是休眠时间为0,模拟JAVA持续执行。
b)任务采用单机4线程组,4任务项,模拟JAVA单机4分片。
c)任务配置线程数为1,即单线程执行,模拟java也是单线程执行。
总计耗时:36.1970秒3、xxl-job实现计算结果如下(待更新):
备注:a)在Win下,CPU占用没有参考意义。
b)因为测试机硬件有限,xxl-job被迫改为两分片执行。猜想4分片也差不了多少。
由此可见tbs之性能怪兽头衔名副其实,虽然目前版本对zookeeper的稳定性依赖较强,但得益于tbs将取数与计算形成抽象,隐藏内部优秀的线程状态管理。在单线程下性能尚且如此,试想一台16GB内存机器开启多线程性能得有多恐怖!