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