2010-04-25 17 views
7

Używam Jquery do przewijania obrazu na mojej stronie w poziomie. Jedynym problemem jest to, że używa on poważnej ilości użycia procesora. Do 100% na pojedynczym laptopie w firefox. Co może spowodować to?Wykorzystanie procesora jquery

Jquery

<script> 
    jQuery(document).ready(function() { 

    $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
    }); 

    </script> 

CSS

.speech { 
    /*position:fixed;*/ 
    top:0; 
    left:0px; 
    height:400px; 
    width:100%; 
    z-index:-1; 
    background:url(/images/speech.png) -300px -500px repeat-x; 
    margin-right: auto; 
    margin-left: auto; 
    position: fixed; 
} 

HTML

<div class="speech"></div> 
+0

Crikey naprawdę? Nigdy nie spotkałem takiego świra pamięci. Z jakiej przeglądarki korzystasz? Nie mogę zreplikować problemu. Spróbuj tego samego, ale nie używaj png - wypróbuj gif/jpg i sprawdź, czy masz ten sam problem. – Glycerine

+3

Nie powiedział, że to był świnia pamięci; nie oznacza to 100% wykorzystania procesora. – Pointy

Odpowiedz

12

Wykorzystuje zasoby procesora, ponieważ prosi się przeglądarkę, aby odświeżyła obraz wiele razy na sekundę przez dłuższy czas. To nie jest za darmo.

+0

+1. brak głosów. – sepehr

0

Jeśli jest to pamięć procesora związanych z problemem wtedy można unieważnić wynik wywołania funkcji jQuery. Jeśli wywołanie zwraca obiekt jQuery następnie po wywołaniu można ustawić go na wartość null:

var tmp = $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
}); 
tmp = null; 

Uwaga: Jeśli to jest w żaden sposób związany z wyciekiem pamięci to ma do czynienia z odniesieniami kołowymi i ustawiając do wartości null można go złamać.

Spróbuj, chciałbym poznać wyniki, jeśli masz czas, aby opublikować.

+0

To nic nie da. Opisany problem dotyczy obciążenia procesora podczas animacji. Uwolnienie obiektu jQuery po animacji nie wpłynie na proces samej animacji. – Pointy

+0

Możesz więc pominąć wszelkie problemy związane z pamięcią. Chciałbym przejść do szczegółów implementacji funkcji animacji i sprawdzić problemy, a także upewnić się, że params funkcji/metody umowy są zrozumiałe. Jeśli animacja jest ważna w twojej aplikacji, sugerowałbym rozglądanie się za bibliotekami JS, które skupiają się na animacjach. Może istnieć wtyczka lub rozszerzenie w jQuery, które lepiej radzi sobie z animacją. Przepraszam, że nie robimy nic dobrego ... czasami potrzebujemy miejsca, aby zacząć i znaleźć drogę do celu po wyeliminowaniu czynników jeden po drugim. – Andreas

11

W sprawie, ktoś szuka rozwiązania wysokie użycie procesora podczas wykorzystaniem animacji jQuery (jak ja), to warto zauważyć, że jQuery.fx.interval został dodany do wersji jQuery 1.4.3, dzięki czemu można kontrolować częstotliwość interwałów animacji.

Przykład zastosowania (ustawienie to około 50-70 przechowywane moi animacje gładka i zauważył wykorzystanie procesora spadła do około 10-20%):

jQuery.fx.interval = 50;

+1

to wszystko - punkt. – schellmax

Powiązane problemy