![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wydzielone z: http://forum.php.pl/index.php?s=&showt...st&p=803748 - DeyV
------------------------ nie mam jak zainstalowac, na płycie mam live bez żadnego serwera nic, a jak chce cos instalowac typu serwer etc to chce już zainstalowanego systemu PS. nie ma co juz kombinowac, pozostawię starą wersję co wysłałem juz jakis czas temu z tą moją funkcją, która w językach kompilowanych na pewno działałaby szybciej, ale php jest interpretowany i tutaj z tym jest różnie :/ Już jest północ to można pisać o zadaniach (IMG:style_emoticons/default/biggrin.gif) Ten post edytował DeyV 4.11.2010, 08:55:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Przyznam, że nie testowałem strlen vs while na długich ciągach znaków. Maksymalna długość to była ok. 30 znaków. Możliwe więc, że jest jak piszesz i wydajność while jest wprost proporcjonalna co długości ciągu, podczas gdy wydajność strlen jest bardziej stabilna. Gdzieś wyczytałem*, że strlen po drodze dokonuje kilku dodatkowych operacji (m.in. zamienia znaki na małe) wobec czego szukałem alternatywnego rozwiązania. Generalnie mój kod miał wiele odmian (IMG:style_emoticons/default/smile.gif) Przykładowo parametry KWAZ zapisywałem jako tablicę, później próbowałem utworzyć z nich stałe, jednak okazało się, że najlepiej wypada po prostu dynamiczne (poprzez $$) tworzenie zmiennych. Do tego cieszyłem się z obsługi 2 specyficznych sytuacji, w których mógłbym deklasować inne rozwiązania: 1. Zakończenie dekodowania ciągu w momencie zebrania wszystkich parametrów, czyli dla np. K3W3A3Z3XXXXXXXXXXXXXXXXXXX kończymy w momencie dotarcia do pierwszego X. 2. Osobne generowanie prostokątów dla min = max. Zobaczymy jak to będzie (IMG:style_emoticons/default/smile.gif) * (IMG:style_emoticons/default/blinksmiley.gif) - mam nadzieję, że nie w manualu (IMG:style_emoticons/default/smile.gif) Co do 1 i 2 punktu to prawda, że mogło to pomóc, ale nie wiadomo jakie są testy. Nie wiadomo, czy ten zysk będzie większy niż czas na wykonanie tych 1k if`ów. Żeby mieć jakieś wnioski trzebaby założyć, że np. - długość ciągu jest losowa od 1 do 10k (przy większych u mnie nie działa), - parametry w ciągu są rozmieszczone losowo, - rozkłąd prawdopodobieństwa wylosowania danej liczby jest równomierny. I z takimi założeniami można już robić jakieś obliczenia/symulacje. A powyższe założenia są w miarę sensowne, ponieważ zakładam, że te testy generował komputer a nie człowiek. Ten post edytował flashdev 6.11.2010, 17:35:30 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
* (IMG:style_emoticons/default/blinksmiley.gif) - mam nadzieję, że nie w manualu (IMG:style_emoticons/default/smile.gif) Nie, nie był to manual. Nie wiem również ile w tym jest prawdy. Jeśli chodzi o ciąg wejściowy, to nie będzie on raczej generowany losowo. Przynajmniej ja będąc na miejscu organizatorów ułożyłbym kilka różnych ciągów sprawdzając reakcję programu w różnych warunkach. Takie 3 sztandarowe przykłady to właśnie: - K3W3A1Z5XXXXXXXXXXX - czyli parametry podane na samym początku (można optymalizować poprzez przerwanie wyszukiwania), - XXXXXK3W3A1Z1XXXXXX - czyli min = max (nie ma potrzeby odpalania całego algorytmu budowania prostokątów), - no i jakiś "normalny" zestaw parametrów dla wygenerowania prostokątów. Ja przyjąłem, że tego typu zestawy otrzymamy (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 22:44 |