ďťż

Szybkość odczytu danych porada z Eksperta

       

Podstrony


telcocafe

Gdzie lepiej przechowywać opcje (ustawienia)? W osobnych zmiennych, czy tablicach? Co jest szybsze?
Nawet wygodniej byłoby to w tablicy trzymać.

W ostatnim KŚE pisali, że im mniej zmiennych, tym szybciej. Jeśli tą zmienną będzie tablica asoacyjna z wieloma wartościami, wyszukiwanie odpowiednich zmiennych będzie szybsze?



Co jest szybsze/wydajniejsze? Stałe, czy tablice? (patrz niżej)

PHP-Fusion przechowuje teksty językowe w stałych. W F3CMS zacząłem przechowywać je w tablicach tekstowych $lang (np. $lang['art']).

I jeszcze drugie - czy ustawienia powinny być przechowywane w plikach konfiguracyjnych, czy w bazie? (chodzi o szybkość)
Użytkownik Ferrari edytował ten post 07 czerwiec 2005, 15:51
Ja mam tablice dla poszczególnych modułów a np. panel admina ma langi globalne oparte na bazie (includowanie 50 plików langów każdego z modułów by pobrać ich nazwy dla panelu admina to za dużoooo)

Baza ma pola: klucz, lang
gdzie w kluczu podaje unikalną frazę np. news_add a w lang array('Polish' => 'Dodaj newsa', 'English' => 'Add news');
:)
Generalnie na bazie byłoby szybsze od plików, lecz jest to trudniejsze do zarządzania przy dużej ilości wpisów etc.

konfigurację strony mam w bazie - klucz/wpis gdzie wpis zawiera tablicę asocjacyjną :) tak samo jak globalne langi...

Jak zależy ci na szybkości to zainstaluj sobie do serwera XDEBUG (www.xdebug.org) pod Windą to XAMPP i EasyPHP powinny przyjąć... pod Linuxem Debian i gentoo mają to w bazie pakietów, dla reszty "ręcznie"

O XDEBUG - notka, opisuję starszą wersję... zobacz co tam na stronie projektu piszą o instalacji bierzącej

Coś nie tak z tym xDebug. W starszej wersji woła mi jakiś plik z PHP4. W nowszej wersji nie działają funkcje, np. xdebug_start_profiling(), ale rozszerzenie działa.



po windowsem też mi się coś... ale pod gentoo idzie. Spróbuj dobrać np. wersję Easyphp do xdebuga :)
Użytkownik Riklaunim edytował ten post 08 czerwiec 2005, 17:53
Nie lepiej sprawdzić obie opcje??

Korzystam z WinCacheGrid, który odczytuje i pokazuje graficznie w postaci drzewa i folderów czas wykonywania się poszczególnych funkcji, zapisanych przez xDebug do pliku.

Count() przy każdej pętli FOR - większy czas... nawet mały kawałek kodu z przypisywaniem zmiennych może spowolnić wykonywanie.
Łączenie z SQLem też trochę trwa.

Jest jakieś polecenie do wydania SQLowi polecenia i nie pobierania w ogóle wyniku?

F3CMS nie dorównuje pod względem szybkości PHP-Fusion. I tu nasuwa się pytanie. Czy nie lepiej byłoby zrobić tak, jak w tym CMSie (podział na news.php, downloads.php, itp...)? Oczywiście nazwy takie same nie muszą być. W F3CMS każda strona otwiera się z index.php i z niego dołączane są odpowiednie pliki. Możliwe, że przy podziale jak w PHP-Fusion jest optymalniej.

Jak wg. was będzie lepiej?
Użytkownik Ferrari edytował ten post 09 czerwiec 2005, 17:54
zobacz pconnect czy nie będzie szybsze... Ile zapytań wykonujesz że jesteś wolniejszy od Fusiona? I czy jak pobierasz jakieś dane to pobierasz tylko te potrzebne a nie wszystko *? Ja mam kilkanaście zapytań i od fusiona jestem szybszy, chyba że biorę długi tekst... (długie newsy na głównej np.)
Użytkownik Riklaunim edytował ten post 09 czerwiec 2005, 20:31
Możliwe, że nieraz pobieram więcej, niż potrzeba (zoptymalizuję to). Innym czynnikiem mogą być także obliczenia.
$stime=$time-1000000000;
Ten kod ma za zadanie zmniejszyć liczbę zapisywaną do bazy do tabeli sesji.

Postaram się optymalizować skrypt.

Zapytań bez żadnej wyświetlanej zawartości aktualnie jest 5 (zalogowany).
Użytkownik Ferrari edytował ten post 09 czerwiec 2005, 21:03
1. Zapytanie.
db_q('DELETE FROM '.$db_pre.'sessions WHERE (type=2 && exp < '.$sxtime.') || (type=1 && exp < '.$xytime.')',0);
Da się to bardziej zoptymalizować?

2. Setlocale
Czy ta funkcja jest ważna w CMSie? Ona też powoduje spowolnienie.

Coś mi się zdaje, że odczyt z plików jednak jest szybszy, niż z bazy. Nawet łączenie z SQLem potrafi zająć na WinXP ok. 400ms (pconnect odpada, ponieważ istnieje coś takiego jak limit połączeń).

Z resztą PHP-Fusion ma prosty system skór. F3CMS już bardziej rozbudowany (więc to też może być czynnikiem spowalniającym).
Użytkownik Ferrari edytował ten post 10 czerwiec 2005, 16:18
MD-Pro pod winME XAMPP ładuje się w jakiś 8 sekund :P ten sam CMS po linuksem na tym samym komputerze pod XAMPPem w wersi linuxowej w niecałe 2... :) Testuj osiągi na freebsd (na czym siedzi większość serwerów) lub linuksie jakimś :)

Co do zapytań to wczytanie pliku z cache opłaca się jedynie gdy zapytanie zwraca dużo danych w senskie KB :) np. dla interfejsu mysli (szybszy interfejs do mysql w php5) ani razu nie było wolniejsze u mnie niż wczytywanie cache :P
Co do skór... proste klasy (nie-smarty) typu heys-template czy podobne praktycznie nie spowalniają skryptu... ja tam używam <?PHP echo $foo; ?> zamiast {foo} i jest o jeden komponent mniej.

Poza tym maniakalna optymalizacja nie ma sensu.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.