【百度地图API】今日小年大进步,齐头共进贺佳节——API优化升级上线,不再增加内存消耗

时间:2021-02-01 15:39:19

原文:【百度地图API】今日小年大进步,齐头共进贺佳节——API优化升级上线,不再增加内存消耗

任务描述:

  今天是2011年01月26日,小年夜。百度地图API在小年夜献给广大API爱好者一份给力的礼物!那就是,百度地图API内存消耗优化升级了!

  此次API优化升级后,内存消耗保持平稳,绝大部分测试中,内存消耗趋于一条直线。(如图所示)

如何实现:

  a)        
本次测试全部采用IE6浏览器;

b)        
本次测试的覆盖物全部采取随机方式创建;

c)        
本次测试覆盖物种类分别为:信息窗口、标注、圆形、多边形、折线、标签;

d)        
依次连续不间断做以上测试,不穿插其他测试;

e)        
测试时间均为每1毫秒执行一次创建;

f)         
测试期间,不新建其他进程。

图示:

  【百度地图API】今日小年大进步,齐头共进贺佳节——API优化升级上线,不再增加内存消耗

说明:

  优化前,内存消耗以50,000为起点,不断上升,造成运行速度慢等问题;

  优化后,内存消耗一直保持在50,000左右,趋于平稳的直线。

运行代码,请点击以下链接:

  marker测试用例:http://ui-love.com/baidumap/markercase.htm

  label测试用例:http://ui-love.com/baidumap/labelcase.htm

  信息窗口w测试用例:http://ui-love.com/baidumap/infowincase.htm
  圆形测试用例:http://ui-love.com/baidumap/circlecase.htm
  多边形测试用例:http://ui-love.com/baidumap/polygoncase.htm

源代码:  
(注:由于测试用例过多,这里不一一列举,仅给出标注Marker的测试用例代码。 )

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><title>Marker 性能</title><style type="text/css">/*<![CDATA[*/body{margin:0;padding:0;font-family:Times New Roman, serif}p{margin:0;padding:0}#wrapper{width:100%;margin:auto;text-align:left;height:100%}#map_container{height:480px;margin:0}#notes{position:absolute;right:10px;width:200px;top:10px}@media print{input{display:none}#notes{display:none}#map_container{margin:10px;border:none}}/*]]>*/</style><script type="text/javascript" src="http://api.map.baidu.com/api?key=25f144bb4491f54b83a7a7b39198c11e&v=1.1&services=true">
</script></head><body> <div id="map_container"></div> <div id="test_container"> <input type="button" onclick="test_mem()" value="mem_test" /> <input type="button" onclick="stop_mem()" value="stop_test" /> </div></div></body><script type="text/javascript">if (typeof console == "undefined"){ window.console = { log: function(){ } }}</script><script type="text/javascript">// 创建地图对象并初始化var mp = new BMap.Map("map_container");var point = new BMap.Point(116.404, 39.915);mp.centerAndZoom(point, 14);// 内存性能测试var count = 0;function createInfo() { mp.clearOverlays(); if (count > 3000) { clearInterval(window._timer); alert("测试结束"); } createMarkers();}function createMarkers(){ var bounds = mp.getBounds(); var lngSpan = bounds.maxX - bounds.minX; var latSpan = bounds.maxY - bounds.minY; for (var i = 0; i < 9; i ++) { count ++; var point = new BMap.Point(bounds.minX + lngSpan * (Math.random() * 0.7 + 0.15), bounds.minY + latSpan * (Math.random() * 0.7 + 0.15)); var marker = new BMap.Marker(point); mp.addOverlay(marker); }}function test_mem() { window._timer = setInterval(createInfo, 1);}function stop_mem() { clearInterval(window._timer); alert("运行了"+count+"次");}</script></html>