表明:消息连串实施手记连串是系小编在平时研发中程序遭遇的分寸的标题,只怕朴实和微小,但屡屡却是平时蒙受的题材。我对里面比较优良的加以收集,描述,总结和享用。

评释:消息种类举行手记连串是系小编在日常研发中程序遭受的深浅的难题,或者朴实和一线,但屡屡却是平常遭遇的标题。作者对其中相比较独立的加以收集,描述,归结和分享。

摘要:此文描述了小编接触过的有的消息种类或平台之间的连片构型和景色,以管窥天的总括分享之。

摘要:此文描述了我接触过的部分音信种类或平台之间的过渡构型和景色,坎井之蛙的总括分享之。

正文

正文

数以万计小说目录:音信种类执行手记 (http://www.cnblogs.com/taichu/p/5305603.html

雨后春笋散文目录:音信连串执行手记 (http://www.cnblogs.com/taichu/p/5305603.html

作者:太初

作者:太初

转发表达:请指明原笔者,连接,及出处。

转发表明:请指明原小编,连接,及出处。

 

 

正文

正文

 

 

在小编实践中,越到有些情形下(比如开发GIS地图应用),客户端的JS代码往往要调用GIS地图引擎的API。

在我实践中,越到稍微情形下(比如开发GIS地图应用),客户端的JS代码往往要调用GIS地图引擎的API。

有点API提供JS接口(版本),那是最便宜的,有些提供诸如FLEX编程接口的API,让你在JS中调用,也是可以,但遭遇如下情状,分享之。

些微API提供JS接口(版本),那是最便宜的,有个别提供诸如FLEX编程接口的API,让你在JS中调用,也是足以,但遭受如下景况,分享之。

 

 

咱俩的客户端是基于GIS地图的施用,用JS代码调用FLEX的API接口,需求经过FLEX的言语在GIS地图上显现(放置)2万个对象(Object)。

咱们的客户端是依据GIS地图的利用,用JS代码调用FLEX的API接口,须要经过FLEX的口舌在GIS地图上突显(放置)2万个对象(Object)。

方法A(老方法):

方法A(老方法):

  1. 在JS中,通过业务层得到2万个设备的音讯数量,诸如数组DEV[20000];
  2. 在JS中,将消息数据打包为hashmap(key -> value);
  3. 在JS中,将hashmap数据结构从JS传入Flex: JS –> Flex;
  4. 在Flex中,拿到传播的hashmap结构,并循环突显在GIS地图上;
  5. 在Flex中,通过hashmap结构提供用key查value的服务:val =
    devicehashmap.get(key);
  1. 在JS中,通过作业层得到2万个设施的音信数据,诸如数组DEV[20000];
  2. 爱博体育,在JS中,将新闻数量打包为hashmap(key -> value);
  3. 在JS中,将hashmap数据结构从JS传入Flex: JS –> Flex;
  4. 在Flex中,拿到传播的hashmap结构,并循环显示在GIS地图上;
  5. 在Flex中,通过hashmap结构提供用key查value的劳动:val =
    devicehashmap.get(key);

品质评估&分析:

性情评估&分析:

  1. 在步骤2,3,4中消耗了20秒左右,数据量是2万个device;主假若手续3较慢;
  2. 发端臆想,JS中结合hashmap结构需求费用一定时间,但不多;可惜这种高级结构对JS/Flex两侧是个负责,传入的时候必要做须求的反省和转换,所以相比慢;
  3. 除此以外,考虑到JS/Flex互相调用结构相比复杂,借使传递高级结构,两侧系统简单在条分缕析上不等同而会挑起额外的花费;
  1. 在步骤2,3,4中消耗了20秒左右,数据量是2万个device;紧如果手续3较慢;
  2. 开头推断,JS中结合hashmap结构亟待开支一定时间,但不多;可惜那种高级结构对JS/Flex两侧是个负责,传入的时候须要做须要的自作者批评和转换,所以相比较慢;
  3. 其它,考虑到JS/Flex互相调用结构比较复杂,假如传递高级结构,两侧系统不难在分析上分裂等而会滋生额外的开销;

(备注:其实还尝试过方法A的变种,就是在JS那里运维循环2万次,每回将一条设备音讯传递给Flex并在GIS地图上突显Object,固然每一遍数据量极小,但是来回调用JS/Flex2万次,功用更低下,所以也舍弃了,这里就不再探讨了)

(备注:其实还尝试过方法A的变种,就是在JS那里运营循环2万次,每一次将一条设备音信传送给Flex并在GIS地图上彰显Object,就算每回数据量极小,可是来回调用JS/Flex2万次,成效更低下,所以也废弃了,那里就不再琢磨了)

方法B(新方法):

方法B(新方法):

  1. 在JS中,通过工作层得到2万个装备的音讯数量,诸如数组DEV[20000];
  2. 在JS中,将新闻数量打包为长字符串String(带约定结构/类似JSON);
  3. 在JS中,将String从JS传入Flex: JS –> Flex;
  4. 在Flex中,拿到传播String,并分析还原为hashmap,并循环呈现在GIS地图上;
  5. 在Flex中,通过hashmap结构提供用key查value的服务:val =
    devicehashmap.get(key);
  1. 在JS中,通过业务层拿到2万个设备的音信数据,诸如数组DEV[20000];
  2. 在JS中,将音信数据打包为长字符串String(带约定结构/类似JSON);
  3. 在JS中,将String从JS传入Flex: JS –> Flex;
  4. 在Flex中,得到传播String,并分析还原为hashmap,并循环显示在GIS地图上;
  5. 在Flex中,通过hashmap结构提供用key查value的劳动:val =
    devicehashmap.get(key);

品质评估&分析:

特性评估&分析:

  1. 在步骤3中消耗了1秒左右(其实是500ms左右),数据量是2万个device;
  2. 始于估量,经典的数据结构String,在多数系统中都能很好的互操作,并取得最简便的支撑和剖析(比如大都以bytes字节数组,最终二个是符号,或许有二个微小的优雅的头结构等等),所以传递String极大的减退了时间支付。而对JS侧,拼接String比组装hashmap更快些;在Flex侧,自身分析String组装本人的haspmap(不是领略JS的hashmap结构)也很快。
  3. 完全上手续1到5消耗在1秒左右,达到需求;
  1. 在步骤3中消耗了1秒左右(其实是500ms左右),数据量是2万个device;
  2. 发轫推测,经典的数据结构String,在一大半连串中都能很好的互操作,并得到最简便易行的帮忙和剖析(比如大都以bytes字节数组,最后二个是符号,或然有3个纤维的高雅的头结构等等),所以传递String极大的狂跌了时光支付。而对JS侧,拼接String比组装hashmap更快些;在Flex侧,本人分析String组装自个儿的haspmap(不是精通JS的hashmap结构)也很快。
  3. 总体上手续1到5消耗在1秒左右,达到必要;

(备注:其实在品味三种其他GIS引擎的时候,我们选取JS/API接口,就平昔不赶上如上的题材,那实际对技术选型是很主要的。)

(备注:其实在尝试二种其余GIS引擎的时候,大家使用JS/API接口,就没有际遇如上的标题,那实际对技术选型是很要紧的。)

 

 

总结:

总结:

  1. 成千成万时候,大家付出1个系统,已毕了A和B的交互调用和操作,只是达到而已。越多情状下实际利用场景必然有数量压力和总体性须要,而假如上了质量,“可用”就不够了,还要考虑“可行”;
  2. 从诸多的办法中找到具体的,才是终极目标。那实质上须要对各个方法的明亮和比对有深远的钻研。但日子少于,经验有限,人力有限,所以不得不做代价有限的品尝,并频频优化,那恐怕也是迭代支出或高速开发相比提倡的吧。
  3. 质量优化自个儿在后面的篇幅已经粗略的谈到,只要有质量瓶颈,只要未达成物理(理论)可总计的品质边界,就能找到合适的法门来优化。
  4. 别的,技术选型也很关键,对于当下我们接触的多少个GIS引擎,接济JSAPI的都未现身如同题材,而非JS的API接口就须求做额外的钻研,尝试和优化。那对技术选型也是三个值得思考的事例。
  1. 众多时候,我们开发3个系统,完结了A和B的互动调用和操作,只是达到而已。更加多处境下实际运用场景必然有多少压力和天性须要,而只要上了品质,“可用”就不够了,还要考虑“可行”;
  2. 从过多的章程中找到切实可行的,才是最终目标。那其实要求对各类法子的知情和比对有深切的钻研。但岁月有限,经验有限,人力有限,所以只可以做代价有限的品味,并持续优化,那只怕也是迭代开发或飞跃开发相比提倡的啊。
  3. 本性优化本身在前头的字数已经粗略的谈到,只要有总体性瓶颈,只要未达标物理(理论)可统计的习性边界,就能找到确切的不二法门来优化。
  4. 除此以外,技术选型也很重大,对于近日大家接触的多少个GIS引擎,协助JSAPI的都未现身类似题材,而非JS的API接口就须求做额外的商量,尝试和优化。那对技术选型也是3个值得考虑的例子。

 

 

相关文章