Jak przyspieszyć kod?

0

Witam.
Czy możecie mi pomóc?
Napisałem program, który wreszcie działa jak trzeba tylko przekracza czasy w dużych testach.
Kod: http://ideone.com/dyneVz
próbowałem przerobić tak: http://ideone.com/ZjHebS , ale nie odniosło to skutku bo czasy nawet nie drgnęły.
Znacie jakieś fajne sztuczki do przyspieszania.
Będę wdzięczny za pomoc.
Pozdrawiam.

0

Rozumiem ze wg ciebie nie warto napisać co ten kod miał robić? o_O
Narzędzie którego powinieneś użyć to profiler. On ci powie który fragment kodu zjada najwięcej czasu i warto spróbować go przyspieszyć.

0

Odszukaj to co ci powiedziałem na ten kod w poprzednim poście.
Jedną rzecz powtórzę tu: - "Będzie prawdziwe odwracanie - nie przejdziesz limitu czasowego"

0

Ale ja przecież tutaj też tak prawdziwie nie odwracam, bo nie przetasowuje listy tylko jak flaga jest ustawiona na true to dodaje i szukam z innej strony.
PS: Treść: http://ideone.com/oMvuPs

0

Sprawdziłem program za pomocą profilera i pokazał, że clr.dll najbardziej zwalnia działanie.

0
Ursinus napisał(a):

Sprawdziłem program za pomocą profilera i pokazał, że clr.dll najbardziej zwalnia działanie.

o_O to napisz zażalenie do microsoftu. Myślałem ze oczywiste jest że w outpucie profilera interesują cię głównie wyniki dla twojego kodu...
To oczywiste że jak robisz dużo operacji I/O to one zajmują sporo czasu, ale nie masz na to specjalnie wpływu. Można oczywiście zmienić jedną funkcje z biblioteki standardowej na inną, ale takie rzeczy zostawiłbym jednak na koniec i skupił się na tym co wolno działa w twoim kodzie.

0

Wcale bym się nie zdziwił, jak problemem okazały się jednak operacje wyjścia.
Spróbuj użyć

 std::ios_base::sync_with_stdio(false);

, a zamiast std::endl używaj '\n'.
A tak najlepiej to zrezygnuj z iostream i przepisz ten kod pod cstdio

0

Próbowałem i tak jak pisze ownadi, ale nic z tego czasy dalej takie same. Jeśli nie clr.dll to zostają getline'y w main'ie i te chyba pętle for w find_pomysl.

0

Tak a propos, gdzie zwalniasz pamięć?
Może przez to działać zbyt długo.

0

A o jaka pamięć chodzi _13_Dragon? Przy usuwaniu obiektu z listy?

0

tak

0

Ok spróbuje. Dzięki :)

0

PS: Sprawdziłem, ale czasy takie same jak były takie i są. Myślę, że to wina pętli for w while'u, która sprawdza ilość danych liczb. Gdyby to się dało jakoś przyspieszyć to może by poszło.

0
Ursinus napisał(a):

Sprawdziłem program za pomocą profilera i pokazał, że clr.dll najbardziej zwalnia działanie.

Kompilujesz to jako C++/CLI że ci clr.dll do procesu ładuje?

0

Nie jako zwykłą konsolową apkę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1