InsertPerformanceTest.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Doctrine\Tests\ORM\Performance;
  3. require_once __DIR__ . '/../../TestInit.php';
  4. use Doctrine\Tests\Models\CMS\CmsUser;
  5. /**
  6. * Description of InsertPerformanceTest
  7. *
  8. * @author robo
  9. * @group performance
  10. */
  11. class InsertPerformanceTest extends \Doctrine\Tests\OrmPerformanceTestCase
  12. {
  13. protected function setUp() {
  14. $this->useModelSet('cms');
  15. parent::setUp();
  16. }
  17. /**
  18. * [romanb: 10000 objects in ~8 seconds]
  19. */
  20. public function testInsertPerformance()
  21. {
  22. $s = microtime(true);
  23. $conn = $this->_em->getConnection();
  24. $this->setMaxRunningTime(10);
  25. //echo "Memory usage before: " . (memory_get_usage() / 1024) . " KB" . PHP_EOL;
  26. $batchSize = 20;
  27. for ($i=1; $i<=10000; ++$i) {
  28. $user = new CmsUser;
  29. $user->status = 'user';
  30. $user->username = 'user' . $i;
  31. $user->name = 'Mr.Smith-' . $i;
  32. $this->_em->persist($user);
  33. if (($i % $batchSize) == 0) {
  34. $this->_em->flush();
  35. $this->_em->clear();
  36. }
  37. }
  38. //gc_collect_cycles();
  39. //echo "Memory usage after: " . (memory_get_usage() / 1024) . " KB" . PHP_EOL;
  40. $e = microtime(true);
  41. echo ' Inserted 10000 objects in ' . ($e - $s) . ' seconds' . PHP_EOL;
  42. }
  43. }