f/通讯与导航 2014-08-20 03:11

MOBAC 1.9.6修改版build452,再次大幅提升性能,飞一般的速度!

本次修改主要优化了性能,大幅提高地图创建速度,尤其是OruxMaps Sqlite格式地图的创建速度,速度提升最高可达4倍以上,器性能越好CPU核数越多硬盘越快,性能相对原始程序提升越大。

做了个简单测试,测试目标为一个上海地区天地图卫星+地标OruxMaps Sqlite地图,图层为15-18层,总图块数94457*2(两个图层),无图片转换(MOBAC生成OruxMaps地图缺省使用JPEG 品质系数90进行压缩)最终生成地图大小为1.75GB。
测试机器为一台笔记本电脑,CPU i5-2430M,内存8GB,操作系统Windows 7 64位。

分两种情况进行测试,一种是缓存无数据,全部数据从网络下载;一种是缓存已有全部数据,无须下载。下载线程数设为6。每次测试前重启机器,第一种测试情况先清空缓存。测试完第一种情况,缓存已有最新数据后测试第二种情况。

缓存无数据测试结果:
原始程序:平均下载速度716.25KB/秒,用时73分13秒
修改程序:平均下载速度645.38KB/秒,用时58分52秒,在网路速度比前一次低的情况下速度仍然提高了24.4%

缓存已有全部数据测试结果:
原始程序:用时40分59秒
修改程序:用时22分9秒,速度提高85.0%!
修改程序从缓存直接创建地图功能(不联网检查图块更新):用时7分5秒,速度提高478.6%!

本次具体修改内容:
1.9.6 build 452 (2014-08-18)
修改MapTileBuilder为多线程工作。
加入SystemMonitor类,获得系统CPU负载相关信息,MapTileBuilder线程池线程数量和缓冲区大小根据CPU核数量自动确定。
废弃原程序的CacheTileProvider,因为MapTileBuilder已实现多线程
地图创建进度对话框增加地图创建总图块数,已完成图块数和百分比的显示。
修正原程序OruxMapsSqlite:createMap未正确抛出InterruptException导致终止下载按钮有时不起作用的问题。
修改创建OruxMaps Sqlite地图时进度百分比增加的显示方式,改批量提交时增加为创建每个tile时增加。
打包时加入jai库和sqlite库

另外压缩包里加入两个谷歌自定义地图源,新的对HTTP404错误处理方法的设置可以参考这两个XML文件。

下载地址:
 链接:http://pan.baidu.com/s/1i3zd241 密码:vs9n

已归档
点赞 20
34 评论
共 34 条评论
帖子已归档
Avatar
yy09547 2014-08-20 03:48

顶。。。。。。。。。。

Avatar
y82824 2014-08-20 06:34

顶死:woot:

Avatar
crazyq OP 2014-08-20 12:55

程序仍有较大优化提升余地,下一次发布将再次提升性能,并同时减小使用JPEG压缩生成的地图体积。

Avatar
lx2100965 2014-08-20 18:12

这个必须顶

Avatar
y82824 2014-08-21 00:50

能不能支持KML文件?

Avatar
crazyq OP y82824 2014-08-21 01:35

目前主要致力于性能优化,原程序速度实在太慢了,原来一天都做不好的图现在四五个小时就能做好了,还可以再提高。

可以优化提升的地方太多了,本人其实不是做java开发的,对java只是略懂,但是对于原程序很多代码以及java程序员的编程风格,我只能呵呵了。。。

Avatar
y82824 2014-08-27 00:17

可以自定义设置地图下载大小吗,老是弹出超出图块多少大小限制,有办法解决吗?

Avatar
crazyq OP y82824 2014-08-28 06:20

 内部已经改成1000000了,还不够用?你要做多大的地图啊?

Avatar
y82824 crazyq 2014-08-29 03:00

:woot:

Avatar
huihua 2014-08-28 07:19

能不能分享几个地图源?

我需要卫星地图,带地名,无需纠偏的。

Avatar
huihua 2014-08-28 12:44

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
<name>My Own Google Hybrid Map3</name>
<layers>
<customMapSource>

<name>Custom OSM Mapnik</name>

<minZoom>0</minZoom>

<maxZoom>18</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url><![CDATA[http://mt{$serverpart}.google.cn/vt/lyrs=s@157&hl=zh-CN&gl=CN&src=app&expIds=201527&rlbl=1&x={$x}&y={$y}&z={$z}&s=Galileo]]></url>

<serverParts>0 1 2 3</serverParts>

<backgroundColor>#000000</backgroundColor>

</customMapSource>

<customMapSource>

<name>Custom transparent hillshade</name>

<minZoom>0</minZoom>

<maxZoom>18</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url><![CDATA[http://mt{$serverpart}.google.cn/vt/imgtp=png32&lyrs=h@272000000&hl=zh-CN&gl=CN&src=app&expIds=201527&rlbl=1&x={$x}&s=&y={$y}&z={$z}&s=]]></url>

<serverParts>0 1 2 3</serverParts>

</customMapSource>
</layers>
</customMultiLayerMapSource>

做了一个带道路地名的卫星地图源,帖上来。
将上面代码复制到一个新建的空白记事本文档里面,另存为文本文件,再将扩展名改为xml,把保存好的xml文件复制到MOBAC的mapsources文件夹下面,重启MOBAC,便能看见新制作的图源My Own Google Hybrid Map3

Avatar
神舟0号 2014-08-28 16:02

赞!真的飞一般的速度!

Avatar
主机板 2014-08-30 08:21

赞!真的飞一般的速度!

Avatar
ygfly 2014-08-31 08:13

楼主辛苦了,感谢分享!

Avatar
satan1001 2014-09-21 03:34

这个算正常吗?

Avatar
crazyq OP satan1001 2014-10-17 03:13

软件预估的时间并不准确,随你的下载速度会随时变化,要看最终你用了多时间。

Avatar
zhhxq 2014-09-21 10:53

不知道Rmaps Sqlite格式地图的创建速度有没有做针对性的提升?

Avatar
crazyq OP zhhxq 2014-10-17 03:12

速度都有提升。

Avatar
阿东奎 2014-09-21 13:47

我的显示这样是怎么回事?

Avatar
crazyq OP 阿东奎 2014-10-17 03:11

一个地图 同一图层只能有一个,上面的错误是说你18层加了2个。

Avatar
新心人类 2014-09-23 14:23

谁给来个纠偏的ABC地图源,谢谢!

Avatar
火车大盗 2014-09-25 00:13

比另一个版本好很多,谢谢分享

Avatar
五加三所 2014-09-25 03:09

谢谢分享  +10

Avatar
火车大盗 2014-09-29 01:03

下载了十几个地图都很正常,可昨天下载8级以上的图层,不管用什么图源,软件都只下载8级和以下的图层,求助:(

Avatar
crazyq OP 火车大盗 2014-10-17 03:10

检查一下地图册树形结构里8级以上的图层前面的勾是不是被去掉了。

Avatar
火车大盗 crazyq 2014-11-02 05:53

没有去掉

Avatar
jsww 2014-10-21 15:46

改个360盘吧!百度无力。。。

Avatar
年年不忘 2014-10-28 13:52

下来试试