首先祝论坛中的各位兄弟新年好。最近小弟所在的项目遇到了性能问题,在此向各位讨个思路。
首先我们的项目架构是这样的:
    1. 采用C/S架构
    2. 客户端通信部分采用C++实现,负责和服务器通信
    3. 客户端没有任何界面,只有一个Web Browser控件,占满整个窗体
    4. 客户端加载html并暴露一些API给脚本来调用,所有的界面逻辑由html来实现。
我是在中途加入这个项目的,整个项目的架构是由公司的上层订的因此,我们不能对其修改。
     现在项目开发进度过半,经过艰难的摸索并排除了IE各种让人恶心的Bug之后,总算多少有点
样子了。但是遇到了一个让我在一开始就很担心的问题:性能。随便晃动下鼠标CPU占用率就很
高。我曾尝试优化下,但从几万行代码中一次排除好比大海捞针,而且也不能百分百确定是脚步
的问题,底层的C++代码也有可能。
     搜索了很多profile相关的文章大部分是关于FireBug的,IE下的有用的工具非常少。而且还有一个
很要命的问题,我们的程序还不是运行在纯IE中,而是在IE外层包了一层的客户端中,使分析起来就更
麻烦了。
      不知道大家有没有这方面的经验,如果有请不吝赐教,我现在有点不知道如何下手。在此奉劝大家
这种方式调试和分析代码真的很累,还要面临各种让人恶心的要死的IE Bug, 而且由底层调用的函数还有
可能会采用多线程执行,能够不用就不要用这种方式进行开发,乖乖的正规的客户端开发语言进行开发要
牢靠而且方便的多

解决方案 »

  1.   

    没整过,不知道暴露的API是什么样的。
    如果通过Ajax可以实现的话,客户端直接用Ajax就好了,可以省下不少麻烦。
    客户端也不需要暴露,API了,只需要一个纯的 WEB Browser控件就可以了。
    而c++只需要写好服务端就可以了。
    就像 http://web.qq.com 那样,处理信息的服务器还是QQ服务器,而客户端由原来的安装包,变成了浏览器。
    3Q大战的时候,360就是用一个 WEB Browser链接到webqq的网址作为360版QQ的。
      

  2.   

    不对吧,浏览器类的应该是B/S结构,怎么变成C/S了?
    难道是2种结构混用,性能方面不好说,如果是后台程序就跟浏览器段没有太大关系了!
      

  3.   

    如果随便晃动下鼠标CPU占用率就很高,个人估计是把太多的事务都交给浏览器部分来完成了,导致负荷过重!
      

  4.   

    尽可能减少页面dom的数量多弄点tab 分页之类的切换模块
      

  5.   

    随便晃动下鼠标CPU占用率就很高难道是有 很多的 mousemove 事件?如果是,可以考虑  mouseover mouseout  
      

  6.   

    晕死了,c++组的同事通过spy++分析之后发现有大量的onmousemove消息,
    后来同事的一句话提醒了我:会不会和样式有关系?。一句话惊醒梦中人,
    我们一直从Script中找原因,而漏掉了另一个会导致性能问题的元凶CSS文件。
    一查找CSS文件,终于找到的元凶:CSS中的expression,我们脑残的美工因为
    想去掉超链接的虚线框在CSS表达式中使用了expression。就一条样式:
    A{
            blr:expression(this.onFocus=this.blur());
    }
    去掉之后,性能开销明显没有那么大了。以前只知道expression会对性能有
    影响,今天才知道影响是这样明显,血的教训啊。
      

  7.   

    expression 据说指对IE有效果的
      

  8.   

    学习哈  第一次知道 css的这东西会对性能产生这么大的影响
      

  9.   

    expression 我记住了,如果dom交互频繁可以试试面向数据编程的概念。