`
hax
  • 浏览: 974009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XHR对象池是无意义的

    博客分类:
  • AJAX
阅读更多
本文是针对http://www.iteye.com/topic/103313的回复。

池增加了代码复杂度,反而可能降低效率。我估计,native的new XMLHttpRequest肯定应比你的池要高效。只有IE6,因为是创建一个AcitveX对象,可能较为低效。但是这种效率提高到底有多少?非常值得怀疑。

事实上,对象池技术在多数场合并无必要,例如在java中,只有重量级资源对象,或者反复创建相同的对象并可能影响性能,才会使用对象池。

而在js里面:
1. js对象只是XHR的wrapper,纯粹new一个js对象的开销不会比你复杂的池要大,只会小。
2. XHR自己可能存在优化。实际上,UA自己或者更底层的网络协议层,对于http请求都是有队列的。所以不用你画蛇添足。
3. 就算要用池,浏览器同源请求在同一时刻只能有2个,不同源的也有一定上限(通常10个以下),所以你真的要做池的话,其实应该控制上限。
4. 最重要一点,即使池稍稍提高了效率,与一个HTTP的Network IO相比,肯定可以忽略不计。

总之,XHR的池是毫无意义的——除非你有数据证明它确实提高了效率。

BTW,使用你这个代码的“好处”是,虽然你的这个代码在IE6上会有内存泄漏,但同样是泄漏,因为你重复利用了XHR对象,所以估计你的泄漏量会小。
分享到:
评论

相关推荐

    java中文分词代码[文].pdf

    6. 为了提高效率,代码使用了`intern()`方法,这会将字符串转换为字符串池中的引用,避免了多次创建相同的字符串对象。 7. 此分词器可能采用了基于词典的简单分词策略,即如果输入的汉字序列在词汇表中,则将其作为...

    软件开发编码规范收集.pdf

    - 对于高开销的对象,考虑使用对象池以减少内存分配和垃圾回收的压力。 - 日志处理时,使用isXXXEnabled检查后再生成日志,避免不必要的输出,并且在生产环境中避免输出文件名和行号,以提高安全性。 5. **安全...

    .net代码优化总结、[收集].pdf

    1.4.1 避免无意义的变量初始化动作:不必要的初始化可能会浪费时间和空间。 1.4.2 ValueType 和 ReferenceType:值类型存储在栈上,引用类型在堆上,根据场景选择合适的数据类型可以提高性能。 1.4.3 尽可能使用最...

    jndi配置[归类].pdf

    - **负载均衡**:通过数据源可以实现连接池,提高系统性能,同时支持在多台数据库之间进行负载均衡。 对于Tomcat而言,`UserDatabase`资源是Tomcat内置的一种用户数据库,可以用来存储和管理用户的登录信息。`...

    tomcat启动内存设置[参考].pdf

    合理设置Tomcat的启动内存对于提高系统的稳定性和响应速度具有重要意义。 #### 二、JVM内存区域及参数介绍 ##### 1. 堆内存(Heap Memory) 堆内存是JVM用于存储对象实例的主要区域。它分为新生代和老年代两个...

    ABAP开发编码规范V1[定义].pdf

    - **文本元素**:如何创建和使用文本池,以存储可重用的文本,以及如何引用这些文本。 - **菜单**:菜单和交易代码的设计标准,以确保用户界面的一致性。 - **子程序和函数**:定义了子程序和全局函数的定义、...

Global site tag (gtag.js) - Google Analytics