2011-01-05 95 views
1
<script> 
    function mySlide() 
    { 
     var myFx = new Fx.Slide('my-slide', { 
      duration: 1000, 
      transition: Fx.Transitions.Pow.easeOut 
     }); 

     //Toggles between slideIn and slideOut twice: 
     myFx.toggle().chain(myFx.toggle); 

    } 

    var interval = null; 

    function clearTime() 
    { 
     $clear(interval); 
    } 

    function play() 
    { 
     interval = mySlide.periodical(1000); 
    } 
</script> 
<div onclick="clearTime();"> stop </div> 
<div onclick="play();"> play </div> 
<img id="my-slide" src="http://lh5.ggpht.com/_8Nsej4QeRGg/TE5m5zRf4bI/AAAAAAAAAgo/pQGKPX8zn9c/gadget-01.jpg"/> 

当我试图用Safari浏览器上面的代码,在Windows任务管理器显示的30%-50%javascript - 如何提高性能?

CPU利用率当我把上面的代码与其它的HTML代码一整页,利用率60%-70%

那么有什么不同呢?为什么js在一个明确的页面上更快?

+1

你的表现相对比例是? – jball 2011-01-05 03:55:10

+0

在其他浏览器中如何? – Chandu 2011-01-05 03:59:21

+0

@jball:不相对于。我在电脑上试了一次,但浏览器却不一样(清除页面和html页面) - > diffimantly perfomance – Chameron 2011-01-05 04:17:10

回答

2

因为您的脚本会影响页面。我认为它会在页面上添加一些内容,然后对其进行动画处理。这需要浏览器:

  • 搜索页面上的元素插入您的新元素(S)(称为DOM遍历的位置 - 因为你使用的是ID没有这么多的问题,而不是复杂的选择)
  • 计算和重新渲染的元素,会推来推去的页面(称为回流 - 这是最昂贵的)

因此,在一般情况下,你的页面上的多个元素,以及更多的CSS规则,DOM穿越和回流需要的时间越长。

更多回流:

+0

是的,我认为是的。但是我想要这个porblem的一些文件,我必须报告它。你能告诉我研究的来源吗? – Chameron 2011-01-05 04:21:44

+0

@Chameron,添加了一个链接到我的答案。 – 2011-01-05 04:28:44

+0

感谢您的建议 – Chameron 2011-01-05 04:58:13