Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 16:27:02 Dzięki Thud. O to mi właśnie chodziło. :) |
|
Elaine |
» 2013-07-11 16:29:04 Tak pytam z ciekawości, co jest szybsze, sprawdzenie warunku np.:
if( a = 3 ) {...} czy przypisanie wartości do liczby, np.:
a = 4; |
Te operacje nie są równoważne, porównywanie nie ma większego sensu. Na x86, podobnie jak na większości innych "normalnych" architektur, obydwie operacje mogą równie dobrze potrzebować zera cykli, jak i kilku ich tysięcy, a w przypadku, kiedy na danej platformie działa typowy system operacyjny, górną granicą może być nawet kilka sekund. Co próbujesz zrobić? Możesz pokazać więcej kodu? Dzięki Thud. O to mi właśnie chodziło. :) |
Na pewno piszesz na AVR? |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 16:38:06 Wiem, że te operacje nie są równoważne. Nie piszę na AVR, skąd te wnioski? Proszę, oto kod: while( x == 2 ) { if( tmpwhilevar != 1 ) tmpwhilevar = 1; ... }
Skoro się powtarza ten kod, to dlatego właśnie chciałem wiedzieć co będzie bardziej optymalne, czy to co jest teraz, czy ciągłe przypisywanie wartości do kodu. EDIT: Czytanie ze zrozumieniem... Thud pisał o AVR, a myślałem, że o x86. ;D Temat dalej aktualny. ;P |
|
DejaVu |
» 2013-07-11 16:49:50 Jeżeli próbujesz optymalizować instrukcje, a nie algorytm to znaczy, że nie wiesz na czym polega optymalizacja :) Nawet jeżeli udałoby Ci się przyśpieszyć działanie kodu dwukrotnie pisząc optymalniej instrukcje, to i tak zazwyczaj to się odbywa kosztem jego czytelności, a to z kolei będzie wydłużało czas wytwarzania aplikacji (nie wspominając już o diagnozowaniu i usuwaniu błędów). |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-11 16:54:52 Wiem na czym polega optymalizacja. Chodzi mi o jak najwyższą prędkość tych paru instrukcji, nie algorytmów. Różnice mogą być minimalne, nawet 1 cykl zegarowy. A czytelność to inny temat i nie o to tutaj chodzi. :) (na pewno dbałbym o czytelność kodu w normalnym projekcie, ja po prostu pytam się z ciekawości o te różnice prędkości) :) |
|
Elaine |
» 2013-07-11 17:02:37 Zmierz. Na obecnych platformach nie da się przewidzieć różnicy, pomiar to jedyna metoda dająca wiarygodny wynik. Oczywiście to wszystko przy założeniu, że kompilator nie zoptymalizuje if( foo != X ) foo = X; do foo = X; , bo jeśli to zrobi, to różnicy nie będzie, z oczywistych względów. |
|
cyklopek11 |
» 2013-07-11 17:19:59 Xynxyn najlepiej po zbudowaniu wersji Release danym środowiskiem przyjrzeć się jej pod zewnętrznym debugerem/disasemblerem. Przed danymi instrukcjami i po nich robisz sobie wstawkę asemblerową, np kilka razy int 3, aby znaleźć łatwo w kodzie asemblera i porównujesz, do ilu instrukcji asemblera rozwinął Twój kod kompilator. |
|
akwes |
» 2013-07-11 17:38:45 |
|
1 « 2 » 3 |