Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql/pod] PDO wolniejsze od MySQL?, Test prędkości
projektGraf
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 19.09.2009

Ostrzeżenie: (0%)
-----


Witam

Ponieważ tyle się pisze nad temat szybkości PDO postanowiłem porównać obie metody która jest szybsza.

Tak więc stworzyłem dwa pliki:
pdo.php
  1. <?php
  2. $start=microtime();
  3.  
  4. try{
  5.  
  6. $pdo = new PDO('mysql:host=******;dbname=*******', '*******', '******');
  7. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8.  
  9. $stmt = $pdo -> query('SELECT `id`, `coordinates_X`, `coordinates_Y`, `create_ip_user`, `create_date`, `name_pl`, `wiki_link_pl`
  10. FROM `points` ORDER BY `id`');
  11.  
  12. while($row = $stmt -> fetch())
  13. {
  14. print $row['id'].' - '.$row['coordinates_X'].' - '.$row['coordinates_Y'].' - '.$row['create_ip_user'].' - '.$row['create_date'].' - '.$row['name_pl'].' - '.$row['wiki_link_pl'].'<br>';
  15. }
  16. $stmt -> closeCursor();
  17. }
  18. catch(PDOException $e)
  19. {
  20. echo 'Błąd bazy danych: ' . $e->getMessage();
  21. }
  22.  
  23.  
  24. echo round(microtime()-$start, 6);
  25. ?>


sql.php
  1. <?php
  2. $start=microtime();
  3.  
  4. define('DB_SERVER', '*******'); // Host do bazy SQL
  5. define('DB_SERVER_USERNAME', '*******'); // Nazwa użytkownika bazy SQL
  6. define('DB_SERVER_PASSWORD', '******'); // Hasło do bazy SQL
  7. define('DB_DATABASE', '******');
  8.  
  9.  
  10. if(!mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)){
  11. print 'Konfiguracja do dupy';
  12. }
  13.  
  14. if(!mysql_select_db(DB_DATABASE) ){
  15. print 'zła baza';
  16. }
  17. mysql_query("SET NAMES 'latin2'");
  18.  
  19. $query = mysql_query("SELECT `id`, `coordinates_X`, `coordinates_Y`, `create_ip_user`, `create_date`, `name_pl`, `wiki_link_pl`
  20. FROM `points` ORDER BY `id`");
  21.  
  22. while($row = mysql_fetch_array($query)){
  23.  
  24. print $row['id'].' - '.$row['coordinates_X'].' - '.$row['coordinates_Y'].' - '.$row['create_ip_user'].' - '.$row['create_date'].' - '.$row['name_pl'].' - '.$row['wiki_link_pl'].'<br>';
  25. }
  26.  
  27.  
  28. echo round(microtime()-$start, 6);
  29.  
  30. ?>


To samo zapytanie ten sam serwer, ta sama metoda pokazywania danych i.......
wychodzi że PDO jest wolniejsze od MySQL
Ciekawe co wy na to

Oto linki sami ocencie:
http://infointravel.com/test/pdo.php
http://infointravel.com/test/sql.php

Pozdrawiam
Go to the top of the page
+Quote Post
kilas88
post
Post #2





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


"PDO wolniejsze od MySQL", to jakiś żart? PDO jest warstwą abstrakcji dla różnych dialektów SQL, w tym MySQL.
Go to the top of the page
+Quote Post
projektGraf
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 19.09.2009

Ostrzeżenie: (0%)
-----


No to wiem, ale porównaj sobie czasy, i wychodzi że przy użyciu zapytania PDO czas jest gorszy od zwykłego MySQL.
Sam się zdziwiłem dlatego pisze na forum, bo przerabiam cały soft teraz na PDO i się zdziwiłem gdy sobie zrobiłem taki test.
Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




PDO JEST wolniejszy.

http://dealnews.com/developers/php-mysql.html
Go to the top of the page
+Quote Post
ziqzaq
post
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


To ja może o samym kodzie testu bo to, że PDO jest wolniejsze jest jasne.
Wiesz, że na ta twoja metoda daje niekiedy minusowe czasy (np. ja miałem 0.255882 dla pdo.php i -0.664469 dla sql.php)? Tak to jest jak się odejmuje ciągi znaków a nie liczby.
Manual microtime(), i zobacz sobie co ta funkcja zwraca i jaki - jakże ważny dla ciebie - argument przyjmuje.
Dla testu zrób sobie:

Pozdrawiam.
Go to the top of the page
+Quote Post
kbsucha
post
Post #6





Grupa: Zarejestrowani
Postów: 113
Pomógł: 19
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


Warto by poszukać nowszego testu bo 3 lata to przepaść w programowaniu. Do tego nie wiem jak odnieść się do tego: "I have since run these tests and found PDO to be just as fast as the mysql and mysqli extension. I am not sure what changed. But, change it did." Pomijając fakt, że ten tekst chyba do końca po angielsku nie jest, to autor twierdzi, ze czasy w późniejszych tekstach były już zbliżone.

Co do tematu, to można się spodziewać, że PDO będzie wolniejsze ale nie sądze aby to były jakieś znaczące liczby. Przynajmniej wg mnie nieistotne w stosunku do korzyści jakie oferuje biblioteka.
Go to the top of the page
+Quote Post
TrevorGryffits
post
Post #7





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 29.07.2007
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


A jaka wersja PHP?
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




PDO jest wolniejsze. Przy ostatnich testach jakie robiłem (10 000 zapytań w pętli) pdo przegrywa 1s względem mysql_*. Jest to bardzo dobry wynik co m.in spowodowało, że przeszedłem na PDO.

Ten post edytował wookieb 19.09.2009, 17:35:27
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Różnice w szybkości zależą od rodzaju operacji. Nawet w linku który podał erix:
Cytat
Select Speed:
extension req/s
------------------------
mysqli 164
mysql 162

PDO 88
mysqli (prepared) 86
PDO (prepared) 81

Cytat
Insert Speed
extension time
--------------------------
pdo (extended) 18.17s
mysqli (extended) 18.40s
mysql (extended) 18.46s

pdo (prepared) 25.04s
mysqli (prepared) 36.93s
mysqli 50.43s
mysql 53.09s
pdo 59.96s


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:15