Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Propel vs Doctrine - wynik testu - może jakiś komentarz ?
yankes
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 13.01.2006

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


wczoraj z okazji prac nad pewnym projektem i odwiecznego pytania: Doctrine vs Propel poszukałem i znalazłem

dla potomnych: http://code.google.com/p/php-orm-benchmark...unk/doctrine_12
prosty benchmark: PDO / Propel 1.4 / Propel 1.5 / Propel 1.5 ( with Cache ) / Doctrine 1.2 / Doctrine 2 / Doctrine 2 ( with Cache )

zanim zdecydujecie się samemu pogrzebać/testować pamiętajcie, że Doctrine 2 pracuje z php 5.3.2

oki.. wynik moich testów 'delikatnie' mnie zdziwił:
  1.  
  2. | Insert | findPk|complex| hydrate| with |
  3. |--------|--------|--------|--------|--------|
  4.  
  5. PDOTestSuite | 153 | 154 | 110 | 116 | 103 |
  6.  
  7. Propel14TestSuite | 1214 | 529 | 137 | 321 | 315 |
  8.  
  9. Propel15TestSuite | 1122 | 725 | 250 | 426 | 439 |
  10.  
  11. Propel15WithCacheTestSuite | 1026 | 453 | 171 | 346 | 331 |
  12.  
  13. Doctrine12TestSuite | 2168 | 3697 | 569 | 1990 | 2545 |
  14.  
  15. Doctrine2TestSuite | 189 | 503 | 426 | 1408 | 1284 |
  16.  
  17. Doctrine2WithCacheTestSuite | 203 | 543 | 137 | 769 | 431 |



z tego wynika, że bardzo popularny obecnie Doctrine 1.2 to niezły 'żółw'.....
może ktoś doda coś od siebie na ten temat ? (IMG:style_emoticons/default/snitch.gif) bo może ja coś przeoczyłem ... (IMG:style_emoticons/default/wstydnis.gif)

Ten post edytował yankes 9.05.2010, 22:58:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
yankes
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 13.01.2006

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


Zyx: specjalnie, żeby nie było pytań o metodologię i na użytek innych dałem link do skryptu, którym testowałem.
Jest to czas w mikrosekundach jaki dany ORM potrzebował na wykonanie zapytania.

Tu masz główną klasę abstract:
  1. public function initTables()
  2. {
  3. try {
  4. $this->con->exec('DROP TABLE [book]');
  5. $this->con->exec('DROP TABLE [author]');
  6. } catch (PDOException $e) {
  7. // do nothing - the tables probably don't exist yet
  8. }
  9. $this->con->exec('CREATE TABLE [book]
  10. (
  11. [id] INTEGER NOT NULL PRIMARY KEY,
  12. [title] VARCHAR(255) NOT NULL,
  13. [isbn] VARCHAR(24) NOT NULL,
  14. [price] FLOAT,
  15. [author_id] INTEGER
  16. )');
  17. $this->con->exec('CREATE TABLE [author]
  18. (
  19. [id] INTEGER NOT NULL PRIMARY KEY,
  20. [first_name] VARCHAR(128) NOT NULL,
  21. [last_name] VARCHAR(128) NOT NULL,
  22. [email] VARCHAR(128)
  23. )');
  24. }
  25.  
  26. public function run()
  27. {
  28. $t1 = $this->runTest('runAuthorInsertion', 1700);
  29. $t1 += $this->runTest('runBookInsertion', 1700);
  30. $t2 = $this->runTest('runPKSearch', 1900);
  31. $t3 = $this->runTest('runComplexQuery', 190);
  32. $t4 = $this->runTest('runHydrate', 750);
  33. $t5 = $this->runTest('runJoinSearch', 700);
  34. echo sprintf("%30s | %6d | %6d | %6d | %6d | %6d |\n", get_class($this), $t1, $t2, $t3, $t4, $t5);
  35. }



a tu klase od Doctrine 1.2, która dziedziczy z tej abstrakcyjnej:

  1. function runAuthorInsertion($i)
  2. {
  3. $author = new Author();
  4. $author->first_name = 'John' . $i;
  5. $author->last_name = 'Doe' . $i;
  6. $author->save($this->con);
  7. $this->authors[]= $author->id;
  8. }
  9.  
  10.  
  11. function runBookInsertion($i)
  12. {
  13. $book = new Book();
  14. $book->title = 'Hello' . $i;
  15. $book->author_id = $this->authors[array_rand($this->authors)];
  16. $book->isbn = '1234';
  17. $book->price = $i;
  18. $book->save($this->con);
  19. $this->books[]= $book->id;
  20. }
  21.  
  22. function runPKSearch($i)
  23. {
  24. $author = Doctrine_Core::getTable('Author')->find($this->authors[array_rand($this->authors)]);
  25. }
  26.  
  27. function runComplexQuery($i)
  28. {
  29. $authors = Doctrine_Query::create()
  30. ->from('Author a')
  31. ->where('a.id > ?', $this->authors[array_rand($this->authors)])
  32. ->orWhere('(a.first_name || a.last_name) = ?', 'John Doe')
  33. ->limit(5)
  34. ->count();
  35. }
  36.  
  37.  
  38. function runHydrate($i)
  39. {
  40. $books = Doctrine_Query::create()
  41. ->from('Book b')
  42. ->where('b.price > ?', $i)
  43. ->limit(5)
  44. ->execute();
  45. foreach ($books as $book) {
  46. // removing the record from the instance pool, otherwise we are not testing hydration time!
  47. $book->free(true);
  48. }
  49. }
  50.  
  51. function runJoinSearch($i)
  52. {
  53. $book = Doctrine_Query::create()
  54. ->from('Book b')
  55. ->leftJoin('b.Author a')
  56. ->where('b.title = ?', 'Hello' . $i)
  57. ->limit(1)
  58. ->fetchOne();
  59. }
Go to the top of the page
+Quote Post

Posty w temacie
- yankes   Propel vs Doctrine - wynik testu - może jakiś komentarz ?   9.05.2010, 20:36:10
- - Zyx   A może byś tak jeszcze napisał, co oznaczają te cy...   17.05.2010, 18:14:43
- - yankes   Zyx: specjalnie, żeby nie było pytań o metodologię...   18.05.2010, 08:03:33
- - Zyx   Widzę, że dałeś. Sęk w tym, że nie wszyscy mają cz...   18.05.2010, 16:33:09
- - yankes   Zyx: testy były uruchamiane min 10 razy na 3 różny...   18.05.2010, 21:41:25
- - Zyx   W porządku, to może jeszcze byś odpowiedział na wą...   18.05.2010, 23:01:45
- - yankes   Zyx: wiem, że hydrację wyników do obiektów zamiast...   19.05.2010, 09:18:53
|- - stloyd   Cytat(yankes @ 19.05.2010, 11:18:53 )...   19.05.2010, 09:43:28
- - yankes   oki chyba tak .. bo tylko to znalazłem na stronie...   10.06.2010, 19:47:34
|- - murwazy   Cytat(yankes @ 10.06.2010, 20:47:34 )...   15.06.2010, 14:31:24
- - yankes   słaby to jest Doctrine i myślenie niektórych o now...   15.06.2010, 20:34:12
|- - murwazy   Cytat(yankes @ 15.06.2010, 21:34:12 )...   15.06.2010, 22:02:06
- - fifi209   Wyniki powiem, że mnie bardzo zadziwiły - myślałem...   16.06.2010, 19:33:38
- - Crozin   @fifi209: Może dlatego, że PDO nie jest ORMem?   16.06.2010, 20:22:00
|- - fifi209   Cytat(Crozin @ 16.06.2010, 21:22:00 )...   16.06.2010, 21:30:49
- - Pr0100   Cytatmyślałem, że PDO będzie na samym końcu, a tut...   16.06.2010, 23:05:06
- - xdev   PDO pewnie ma "łatkę" wolnego bo gdyby p...   17.09.2011, 20:26:47
- - javert   Czy może ktoś porównywał najnowsze wersje Propela ...   21.04.2015, 10:08:21


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: 8.10.2025 - 23:44