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

C++ Optymalizacja kodu.

Ostatnio zmodyfikowano 2015-09-02 14:12
Autor Wiadomość
Piastlis
Temat założony przez niniejszego użytkownika
C++ Optymalizacja kodu.
» 2015-08-29 20:35:36
Powiedzmy że mam taki durny kod który nic nie robi:
C/C++
#include <iostream>

int main()
{
    unsigned long long c;
    for( unsigned long long a = 1; a <= 100000; a++ )
    for( unsigned long long b = 10000; b >= 1; b-- )
         c = c + a / b;
   
}
Bez problemu da się skompilować i wykonać:


Process returned 0 (0x0)   execution time : 0.266 s
Press any key to continue.


Ale dodanie jednej linii wszystko zmienia:
C/C++
#include <iostream>

int main()
{
    unsigned long long c;
    for( unsigned long long a = 1; a <= 100000; a++ )
    for( unsigned long long b = 10000; b >= 1; b-- )
         c = c + a / b;
   
    std::cout << c;
}


18352572550287383
Process returned 0 (0x0)   execution time : 24.156 s
Press any key to continue.

Myślę że wiem o co chodzi.W sytuacji gdy napisany kod nie wywołuje żadnych efektów po prostu nie jest kompilowany.Czy tą funkcję kompilatora można wyłączyć?
P-137040
pekfos
» 2015-08-29 20:51:27
Czy tą funkcję kompilatora można wyłączyć?
Nawet nie wiadomo, co masz włączone.
P-137042
Piastlis
Temat założony przez niniejszego użytkownika
» 2015-08-29 20:58:51
Standardowe ustawienia.Code::Block pobrany z tego serwisu.
P-137043
carlosmay
» 2015-08-29 21:13:17
Chodzi o czas wyświetlania na ekran.

Napisz program zliczający ilość kombinacji w dużego lotka bez wyświetlania i z wyświetleniem kombinacji.

Kombinacji jest coś ponad 12 000 000.
Obliczenie tego zajmuje ok 1 sekundę, ale jak dodasz do kodu wyświetlanie wszystkich kombinacji to z 1 godz. zejdzie.
P-137044
Piastlis
Temat założony przez niniejszego użytkownika
» 2015-08-29 21:18:07
Ale w tym przypadku pewnie nie o to chodzi.Wyświetlenie jest jedno a różnica w czasie prawie 24s.I nie mam aż tak szybkiego kompa by policzył mi miliard dodawań i dzieleń w 0.26sek...
 
P-137045
carlosmay
» 2015-08-29 21:58:30
Z ciekawości machnąłem oba przypadki w Code::Blocks i Visual Studio i czasy były bardzo zbliżone ok. 7.5s.
P-137046
Piastlis
Temat założony przez niniejszego użytkownika
» 2015-08-29 22:09:13
Właśnie o to chodzi bym miał podobne czasy dla obu przypadków (różnica 0.1-0.01 na cout). Policzyłbym dokładnie ile czasu zajmuje mi konkretna funkcja.Przecież nie będę pisał kodu który nic nie robi...  
P-137047
carlosmay
» 2015-08-29 22:23:06
Mało robię w Code::blocks i nie zagłębiałem się w jego ustawienia.
To jest ten jeden przypadek czy jeszcze coś się trafiło?

Jak zamienisz te obliczenia na inkrementację to też są takie różnice w czasach.
P-137049
« 1 » 2 3
  Strona 1 z 3 Następna strona