summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/utils/MemProfile.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/utils/MemProfile.php')
-rw-r--r--www/wiki/extensions/Translate/utils/MemProfile.php63
1 files changed, 63 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/utils/MemProfile.php b/www/wiki/extensions/Translate/utils/MemProfile.php
new file mode 100644
index 00000000..7ebc3423
--- /dev/null
+++ b/www/wiki/extensions/Translate/utils/MemProfile.php
@@ -0,0 +1,63 @@
+<?php
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die();
+}
+/**
+ * Very crude tools to track memory usage
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2008, Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+/// Memory usage at checkpoints
+$wgMemUse = [];
+/// Tracks the deepness of the stack
+$wgMemStack = 0;
+
+/**
+ * Call to start memory counting for a block.
+ * @param string $a Block name.
+ */
+function wfMemIn( $a ) {
+ global $wgLang, $wgMemUse, $wgMemStack;
+
+ $mem = memory_get_usage();
+ $memR = memory_get_usage();
+
+ $wgMemUse[$a][] = [ $mem, $memR ];
+
+ $memF = $wgLang->formatNum( $mem );
+ $memRF = $wgLang->formatNum( $memR );
+
+ $pad = str_repeat( '.', $wgMemStack );
+ wfDebug( "$pad$a-IN: \t$memF\t\t$memRF\n" );
+ $wgMemStack++;
+}
+
+/**
+ * Call to start stop counting for a block. Difference from start is shown.
+ * @param string $a Block name.
+ */
+function wfMemOut( $a ) {
+ global $wgLang, $wgMemUse, $wgMemStack;
+
+ $mem = memory_get_usage();
+ $memR = memory_get_usage();
+
+ list( $memO, $memOR ) = array_pop( $wgMemUse[$a] );
+
+ $memF = $wgLang->formatNum( $mem );
+ $memRF = $wgLang->formatNum( $memR );
+
+ $memD = $mem - $memO;
+ $memRD = $memR - $memOR;
+
+ $memDF = $wgLang->formatNum( $memD );
+ $memRDF = $wgLang->formatNum( $memRD );
+
+ $pad = str_repeat( '.', $wgMemStack - 1 );
+ wfDebug( "$pad$a-OUT:\t$memF ($memDF)\t$memRF ($memRDF)\n" );
+ $wgMemStack--;
+}