@@ -38,6 +38,11 @@ class TimeDataCollector extends DataCollector implements Renderable
3838 */
3939 protected $ measures = array ();
4040
41+ /**
42+ * @var bool
43+ */
44+ protected $ memoryMeasure = false ;
45+
4146 /**
4247 * @param float $requestStartTime
4348 */
@@ -53,6 +58,14 @@ public function __construct($requestStartTime = null)
5358 $ this ->requestStartTime = (float )$ requestStartTime ;
5459 }
5560
61+ /**
62+ * Starts memory measuring
63+ */
64+ public function showMemoryUsage ()
65+ {
66+ $ this ->memoryMeasure = true ;
67+ }
68+
5669 /**
5770 * Starts a measure
5871 *
@@ -66,6 +79,7 @@ public function startMeasure($name, $label = null, $collector = null)
6679 $ this ->startedMeasures [$ name ] = array (
6780 'label ' => $ label ?: $ name ,
6881 'start ' => $ start ,
82+ 'memory ' => $ this ->memoryMeasure ? memory_get_usage (false ) : null ,
6983 'collector ' => $ collector
7084 );
7185 }
@@ -94,6 +108,9 @@ public function stopMeasure($name, $params = array())
94108 if (!$ this ->hasStartedMeasure ($ name )) {
95109 throw new DebugBarException ("Failed stopping measure ' $ name' because it hasn't been started " );
96110 }
111+ if (! is_null ($ this ->startedMeasures [$ name ]['memory ' ])) {
112+ $ params ['memoryUsage ' ] = memory_get_usage (false ) - $ this ->startedMeasures [$ name ]['memory ' ];
113+ }
97114 $ this ->addMeasure (
98115 $ this ->startedMeasures [$ name ]['label ' ],
99116 $ this ->startedMeasures [$ name ]['start ' ],
@@ -115,6 +132,11 @@ public function stopMeasure($name, $params = array())
115132 */
116133 public function addMeasure ($ label , $ start , $ end , $ params = array (), $ collector = null )
117134 {
135+ if (isset ($ params ['memoryUsage ' ])) {
136+ $ memory = $ this ->memoryMeasure ? $ params ['memoryUsage ' ] : 0 ;
137+ unset($ params ['memoryUsage ' ]);
138+ }
139+
118140 $ this ->measures [] = array (
119141 'label ' => $ label ,
120142 'start ' => $ start ,
@@ -123,6 +145,8 @@ public function addMeasure($label, $start, $end, $params = array(), $collector =
123145 'relative_end ' => $ end - $ this ->requestEndTime ,
124146 'duration ' => $ end - $ start ,
125147 'duration_str ' => $ this ->getDataFormatter ()->formatDuration ($ end - $ start ),
148+ 'memory ' => $ memory ?? 0 ,
149+ 'memory_str ' => $ this ->getDataFormatter ()->formatBytes ($ memory ?? 0 ),
126150 'params ' => $ params ,
127151 'collector ' => $ collector
128152 );
0 commit comments