JAVA版ZSet性能测试
自己实现的JAVA版ZSet的主要功能,源码在github:
https://github.com/zhangga/JAVAZSet
性能测试:
下面数据都是在本地windows下执行10次的评价值:JVM10G + i7-8700开着各种应用。Eclipse Run 预热几次稳定后。
ZSet使用TreeMap、list的组合存放分值信息。100W条总数据,分值为1W(0-9999)个,这样平均相同分值会有100条数据在list中。
获取1000-3000分值的数据,执行1W次,
取样10次用时ms:6604+6490+6648+6602+7718+7626+6682+7498+6588+7358=69814/10=6981
ZSet使用ConcurrentSkipListMap、list的组合存放分值信息。100W条总数据,分值为1W(0-9999)个,这样平均相同分值会有100条数据在list中。
获取1000-3000分值的数据,执行1W次,
取样10次用时ms:7594+8279+8622+8476+7810+7397+7241+8579+8019+8554=80571/10=8057
ZSet不需要线程安全的情形下使用TreeMap的效率会更高点。
获取高度方法性能测试:
1.使用ZSet获取附近的障碍物,判断是否在障碍物内,获取障碍物高度。
测试用例,在一处放置11个圆形障碍物,搜索2米范围内的障碍物,获取高度。100W次测试,用时在450ms-500ms之间。
2.使用一个正常地图(37号场景)的navmesh数据,recast的获取高度。100W次测试,用时在1000ms-1100ms之间。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张嘎!
评论
GitalkValine