Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kurs JavaScript, Własny kurs języka programowania JavaScript
lukasz1985
post
Post #1





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

Ostrzeżenie: (0%)
-----


Od dłuższego czasu zajmuję się programowaniem w JavaScript i postanowiłem podzielić się swoją wiedzą i napisać kurs JavaScript.

Kurs możecie znaleźć pod adresem http://kursjs.net76.net/.

Zapraszam do czytania. Dziękuję za wszelkie uwagi. Kurs będzie dopracowywany z upływem czasu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
Już widzisz różnicę w deklaracji i sprawdzaniu? Prościej nie da się tego wyjaśnić.

Wreszcie zrozumiałem o co Ci chodzi (IMG:style_emoticons/default/smile.gif)

Powiem szczerze, że o tym nie wiedziałem. Niestety nie mogę nigdzie znaleźć informacji na ten temat - a dokładniej w żadnej dokumentacji, bo na blogu różni ludzi różnie piszą. Jak możesz przytocz informację na ten temat. Ale mniejsza z tym. Zamiast szukać po dokumentacjach i patrzeć do kodu przeglądarek proponuję zrobić niezależny test i będzie wszystko wiadomo:

Kod
<script>
    function S(F,C,t){for(t=new Date();C--;F());return new Date()-t; } //speed, F->funkcja, C->ilość cykli
    
    function test1(){
        var i;
        for(i=0; i <= 100000; ++i){
        }
    }

    function test2(){
        for( var i=0; i <= 100000; ++i){
        }
    }

    function test3(){
        for( var i=0; i <= 100000; i++){
        }
    }

    var j;
    function test4(){
        for(j=0; j <= 100000; j++){
        }
    }
    
    alert ( S(test1,10000)+' ms <-- 1' );
    alert ( S(test2,10000)+' ms <-- 2' );
    alert ( S(test3,10000)+' ms <-- 3' );
    alert ( S(test4,10000)+' ms <-- 4' );  
</script>


Od razu widać, że zmienna globalna( test4 ) to spory spadek na wydajności. Jednak wszystkie pozostałe 3 rozwiązania są do siebie bardzo zbliżone. Różnica jest około 3 milisekund. W większości przypadków test1( Twój faworyt ) wypada najlepiej, ale nie zawsze.

Teraz szybie obliczenia: 10000*100000 = 1 000 000 000 = 1 miliard!
I różnice są rzędu 3ms. Dodatkowo trzeba zaznaczyć, że średnia wyników( dla test 1) to 1015 ms. Czyli 0,296%.

Teraz pytanie czy warto się przejmować spadkiem wydajności o około 0,296%( i nie zawsze jest powiedziane, że "test1" jest najszybszy - podkreślam, że w większości wypadków tak, ale to nie oznacza, że we wszystkich )? Przy myśleniu nad tym pytaniem warto sobie przypomnieć, że czytając taki kurs czytający jest z reguły początkującym. Jest to pytanie retoryczne. Niech każdy sam sobie odpowie na to pytanie i ew. zmieni, bądź nie decyzję. Każdy z nas swoją opinię na ten temat wyraził, więc nie ma sensu prowadzić tego sporu( chyba, że masz jakąś interesującą uwagę do przekazania ).

Chciałbym zaznaczyć, że nie jestem przeciw optymalizacji kodu nawet jeżeli tyczy się to około 0,296%. Sam z reguły to robię, jednak nie oznacza to, że te różnice są zauważalne i, że początkujący musi o nich myśleć. Myślę, że optymalizacji należy szukać gdzie indzie niż w konstrukcji pętli for, bo moim zdaniem 3ms na miliard obrotów to żadna oszczędność, a na pewno w większym kodzie da się poprawić mnóstwo innych rzeczy.

Cytat
bo nie widzisz potrzeby aby początkujący wiedział że istnieje alternatywa/optymalizacja

Całkowicie nie o to mi chodzi. Moim zdaniem początkujący nie musi wiedzieć wszystkiego na raz. Z biegiem czasu dowie się o nowych metodach, algorytmach i jego kod będzie coraz lepszy. Tylko na początku trzeba zachęcić go do nauki, a podając mnóstwo informacji "na raz" moim zdaniem go zniechęcamy. Jak złapie bakcyla to wtedy należy mu mówić o wszystkim (IMG:style_emoticons/default/smile.gif)

Pozdrawiam.

PS. Z tym źródłem to było na serio. Jak możesz przytocz jakieś rzetelne informacje na ten temat. Zawsze lubię się dowiedzieć czegoś nowego. Jeśli to prawda to dzięki za poprawę.

PS2. Oczywiście wyniku testów czasowych są sprawdzane na moim kompie i u każdego mogą być różne. Wpływa na to wszystko (IMG:style_emoticons/default/smile.gif) Ale proporcje powinny być podobne.
Go to the top of the page
+Quote Post

Posty w temacie
- lukasz1985   Kurs JavaScript   10.12.2012, 18:01:53
- - Pawel_W   1. Zwiększenie rozmiaru tekstu rozwala menu 2. ht...   10.12.2012, 18:33:09
- - !*!   1. nawigacja która się snuje podczas przewijania j...   10.12.2012, 18:46:04
|- - emp   Cytat(!*! @ 10.12.2012, 18:46...   14.12.2012, 14:56:56
- - pyro   CytatNazywam się Łukasz, jestem chrześcijaninem. ...   11.12.2012, 09:45:18
- - mortus   @up: W dziale Oceny nie oceniamy czyjegoś wyznania...   11.12.2012, 10:50:55
|- - pyro   Cytat(mortus @ 11.12.2012, 10:50:55 )...   11.12.2012, 20:25:15
- - kamil4u   Moim zdaniem dobra robota. Można się przyczepić do...   11.12.2012, 21:11:32
- - lukaskolista   CytatPoza tym: - deklaracja zmiennej "i...   14.12.2012, 10:39:19
- - Tuminure   @up Chodzi o różnicę między: [JAVASCRIPT] pobierz,...   14.12.2012, 12:51:44
- - Sephirus   Widać, że dość starannie podszedłeś do tematu. Dob...   14.12.2012, 13:10:04
- - kamil4u   To ja uzupełnię nieścisłości w temacie: - var musi...   14.12.2012, 13:38:40
- - !*!   kamil4u - nie wprowadzaj ludzi w błąd. jest różn...   14.12.2012, 14:19:04
- - kamil4u   Coś chyba mówisz nie tak. Twój kod z jsfiddle jest...   15.12.2012, 00:03:07
- - !*!   Cytat(kamil4u)Od kiedy? Warunek i owszem sprawdzan...   15.12.2012, 11:30:58
- - kamil4u   CytatJuż widzisz różnicę w deklaracji i sprawdzani...   15.12.2012, 23:05:56
- - !*!   Nie podam Ci linku z dokumentacji, ponieważ JS jej...   16.12.2012, 11:44:50
|- - zegarek84   Cytat(!*! @ 16.12.2012, 11:44...   17.12.2012, 23:40:33
- - kamil4u   CytatMyślę że wynik wyczerpuje temat. Nie zgodzę s...   16.12.2012, 14:46:47
- - Tuminure   CytatNie zgodzę się! Masz błąd logiczny. Bardz...   17.12.2012, 10:47:39
- - kamil4u   Nie musiałem spr. to widać. Mówimy o funkcji: Kod ...   17.12.2012, 12:44:18


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 05:25