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.
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ć.
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"
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
Sprawdziłem program za pomocą profilera i pokazał, że clr.dll najbardziej zwalnia działanie.
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.
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
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.
Tak a propos, gdzie zwalniasz pamięć?
Może przez to działać zbyt długo.
A o jaka pamięć chodzi _13_Dragon? Przy usuwaniu obiektu z listy?
tak
Ok spróbuje. Dzięki :)
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.
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?
Nie jako zwykłą konsolową apkę.