此文描述了笔者接触过的一部分消息系列或平毕尔巴鄂间的连结构型和意况,音信系列实施手记

 

 

表明:信息序列实施手记系列是系作者在平日研发中程序遇到的高低的题目,也许朴实和微小,但反复却是平时遇上的问题。笔者对里面相比出色的加以收集,描述,归咎和享受。

注明:信息连串实施手记体系是系作者在日常研发中程序碰到的高低的问题,也许朴实和微小,但屡屡却是平日碰着的题目。笔者对里面相比较独立的加以收集,描述,归结和分享。

摘要:此文描述了作者接触过的有的消息序列或平台之间的联网构型和情景,挂一漏万的总计分享之。

摘要:此文描述了作者接触过的一些音信系列或平马尔默间的衔接构型和状态,挂一漏万的下结论分享之。

正文

正文

类别小说目录:音讯连串实施手记 (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字节数组,最终一个是标志,或者有一个纤维的幽雅的头结构等等),所以传递String极大的大跌了岁月支出。而对JS侧,拼接String比组装hashmap更快些;在Flex侧,自己分析String组装自己的haspmap(不是通晓JS的hashmap结构)也很快。
  3. 全部上手续1到5消耗在1秒左右,达到要求;

(备注:其实在品尝三种其他GIS引擎的时候,大家使用JS/API接口,就不曾会见如上的题目,这实际对技术选型是很重点的。)

(备注:其实在尝试三种其它GIS引擎的时候,我们使用JS/API接口,就没有会合如上的题目,这实则对技术选型是很关键的。)

 

 

总结:

总结:

  1. 重重时候,我们付出一个系统,实现了A和B的并行调用和操作,只是达到而已。更多情形下实际利用场景必然有数据压力和特性要求,而假若上了性能,“可用”就不够了,还要考虑“可行”;
  2. 从众多的不二法门中找到实际的,才是最终目的。这实在要求对各类艺术的理解和比对有深深的钻探。但岁月少于,经验有限,人力有限,所以只可以做代价有限的品味,并不止优化,这或许也是迭代付出或飞跃开发相比较提倡的啊。
  3. 性能优化自己在事先的字数已经粗略的谈到,只要有总体性瓶颈,只要未达成物理(理论)可统计的属性边界,就能找到适合的情势来优化。
  4. 其它,技术选型也很重点,对于眼前大家接触的多少个GIS引擎,援助JSAPI的都未出现仿佛题材,而非JS的API接口就需要做额外的探究,尝试和优化。这对技术选型也是一个值得沉思的例证。
  1. 过多时候,我们开发一个连串,实现了A和B的竞相调用和操作,只是达到而已。更多境况下实际行使场景必然有数量压力和总体性要求,而如若上了性能,“可用”就不够了,还要考虑“可行”;
  2. 从许多的不二法门中找到实际的,才是最终目标。这其实要求对各样办法的接头和比对有深远的研讨。但时间少于,经验有限,人力有限,所以只可以做代价有限的尝试,并连发优化,这说不定也是迭代支付或连忙开发相比提倡的吗。
  3. 特性优化自身在前头的字数已经粗略的谈到,只要有总体性瓶颈,只要未达标物理(理论)可总括的特性边界,就能找到合适的方法来优化。
  4. 另外,技术选型也很重大,对于当下大家接触的多少个GIS引擎,协助JSAPI的都未出现仿佛题材,而非JS的API接口就需要做额外的钻研,尝试和优化。这对技术选型也是一个值得思考的事例。

 

 

相关文章