1010use MongoDB \BSON \ObjectId ;
1111use MongoDB \BSON \UTCDateTime ;
1212use PhpBench \Attributes \BeforeMethods ;
13+ use PhpBench \Attributes \Iterations ;
14+ use PhpBench \Attributes \Revs ;
1315use PhpBench \Attributes \Warmup ;
1416
1517#[BeforeMethods(['initDocumentManager ' , 'clearDatabase ' , 'init ' ])]
18+ #[Warmup(2 )]
19+ #[Revs(100 )]
20+ #[Iterations(5 )]
1621final class HydrateDocumentBench extends BaseBench
1722{
1823 /** @var array<string, mixed> */
1924 private static array $ data ;
2025
26+ /** @var array<string, mixed> */
27+ private static array $ extraData ;
28+
2129 /** @var array<string, mixed> */
2230 private static array $ embedOneData ;
2331
@@ -40,6 +48,17 @@ public function init(): void
4048 'createdAt ' => new UTCDateTime (),
4149 ];
4250
51+ self ::$ extraData = [
52+ 'hits ' => 100 ,
53+ 'age ' => 30 ,
54+ 'nullTest ' => null ,
55+ 'logs ' => [
56+ 'User logged in ' ,
57+ 'User updated profile ' ,
58+ 'User logged out ' ,
59+ ],
60+ ];
61+
4362 self ::$ embedOneData = [
4463 'address ' => ['city ' => 'Munich ' ],
4564 ];
@@ -77,31 +96,26 @@ public function init(): void
7796 ->getHydratorFor (User::class);
7897 }
7998
80- #[Warmup(2 )]
8199 public function benchHydrateDocument (): void
82100 {
83- self ::$ hydrator ->hydrate (new User (), self ::$ data );
101+ self ::$ hydrator ->hydrate (new User (), self ::$ data + self :: $ extraData );
84102 }
85103
86- #[Warmup(2 )]
87104 public function benchHydrateDocumentWithEmbedOne (): void
88105 {
89106 self ::$ hydrator ->hydrate (new User (), self ::$ data + self ::$ embedOneData );
90107 }
91108
92- #[Warmup(2 )]
93109 public function benchHydrateDocumentWithEmbedMany (): void
94110 {
95111 self ::$ hydrator ->hydrate (new User (), self ::$ data + self ::$ embedManyData );
96112 }
97113
98- #[Warmup(2 )]
99114 public function benchHydrateDocumentWithReferenceOne (): void
100115 {
101116 self ::$ hydrator ->hydrate (new User (), self ::$ data + self ::$ referenceOneData );
102117 }
103118
104- #[Warmup(2 )]
105119 public function benchHydrateDocumentWithReferenceMany (): void
106120 {
107121 self ::$ hydrator ->hydrate (new User (), self ::$ data + self ::$ referenceManyData );
0 commit comments