InheritancePersisterPerformanceTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace Doctrine\Tests\ORM\Performance;
  3. use Doctrine\ORM\Tools\SchemaTool;
  4. use Doctrine\ORM\Query;
  5. require_once __DIR__ . '/../../TestInit.php';
  6. /**
  7. * @group performance
  8. */
  9. class InheritancePersisterPerformanceTest extends \Doctrine\Tests\OrmFunctionalTestCase
  10. {
  11. protected function setUp()
  12. {
  13. $this->useModelSet('company');
  14. parent::setUp();
  15. }
  16. public function testCompanyContract()
  17. {
  18. $person = new \Doctrine\Tests\Models\Company\CompanyEmployee();
  19. $person->setName('Poor Sales Guy');
  20. $person->setDepartment('Sales');
  21. $person->setSalary(100);
  22. $this->_em->persist($person);
  23. for ($i = 0; $i < 33; $i++) {
  24. $fix = new \Doctrine\Tests\Models\Company\CompanyFixContract();
  25. $fix->setFixPrice(1000);
  26. $fix->setSalesPerson($person);
  27. $fix->markCompleted();
  28. $this->_em->persist($fix);
  29. $flex = new \Doctrine\Tests\Models\Company\CompanyFlexContract();
  30. $flex->setSalesPerson($person);
  31. $flex->setHoursWorked(100);
  32. $flex->setPricePerHour(100);
  33. $flex->markCompleted();
  34. $this->_em->persist($flex);
  35. $ultra = new \Doctrine\Tests\Models\Company\CompanyFlexUltraContract();
  36. $ultra->setSalesPerson($person);
  37. $ultra->setHoursWorked(150);
  38. $ultra->setPricePerHour(150);
  39. $ultra->setMaxPrice(7000);
  40. $this->_em->persist($ultra);
  41. }
  42. $this->_em->flush();
  43. $this->_em->clear();
  44. $start = microtime(true);
  45. $contracts = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyContract')->findAll();
  46. echo "99 CompanyContract: " . number_format(microtime(true) - $start, 6) . "\n";
  47. $this->assertEquals(99, count($contracts));
  48. $this->_em->clear();
  49. $start = microtime(true);
  50. $contracts = $this->_em->getRepository('Doctrine\Tests\Models\Company\CompanyContract')->findAll();
  51. echo "99 CompanyContract: " . number_format(microtime(true) - $start, 6) . "\n";
  52. $this->assertEquals(99, count($contracts));
  53. }
  54. }