C++ Optymalizacja kodu.
Ostatnio zmodyfikowano 2015-09-02 14:12
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: #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: #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ć? |
|
pekfos |
» 2015-08-29 20:51:27 Czy tą funkcję kompilatora można wyłączyć? |
Nawet nie wiadomo, co masz włączone. |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2015-08-29 20:58:51 Standardowe ustawienia.Code::Block pobrany z tego serwisu.
|
|
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. |
|
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... |
|
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.
|
|
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... |
|
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. |
|
« 1 » 2 3 |