Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C/C++] Szybkość wykonywania operacji

Ostatnio zmodyfikowano 2013-07-11 20:44
Autor Wiadomość
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. :)
P-87557
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?
P-87558
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:
C/C++
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
P-87561
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).
P-87566
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) :)
P-87568
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.
P-87569
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.
P-87570
akwes
» 2013-07-11 17:38:45
Mi się wydaje czy już mieliśmy temat o przedwczesnej optymalizacji ;>?

Czy warto optymalizować kod będąc początkującym programistą?
P-87572
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona