addDescription( 'Benchmark for Sanitizer methods.' ); $this->addOption( 'method', 'One of "validateEmail", "encodeAttribute", ' . '"safeEncodeAttribute", "removeHTMLtags", or "stripAllTags". ' . 'Default: (All)', false, true ); } public function execute() { $textWithHtmlSm = 'Before and another word.'; $textWithHtmlLg = str_repeat( // 28K (28 chars * 1000) wfRandomString( 3 ) . ' ' . wfRandomString( 5 ) . ' ' . wfRandomString( 7 ), 1000 ); $method = $this->getOption( 'method' ); $benches = []; if ( !$method || $method === 'validateEmail' ) { $benches['Sanitizer::validateEmail (valid)'] = function () { Sanitizer::validateEmail( 'user@example.org' ); }; $benches['Sanitizer::validateEmail (invalid)'] = function () { Sanitizer::validateEmail( 'username@example! org' ); }; } if ( !$method || $method === 'encodeAttribute' ) { $benches['Sanitizer::encodeAttribute (simple)'] = function () { Sanitizer::encodeAttribute( 'simple' ); }; $benches['Sanitizer::encodeAttribute (special)'] = function () { Sanitizer::encodeAttribute( ":'\"\n https://example" ); }; } if ( !$method || $method === 'safeEncodeAttribute' ) { $benches['Sanitizer::safeEncodeAttribute (simple)'] = function () { Sanitizer::safeEncodeAttribute( 'simple' ); }; $benches['Sanitizer::safeEncodeAttribute (special)'] = function () { Sanitizer::safeEncodeAttribute( ":'\"\n https://example" ); }; } if ( !$method || $method === 'removeHTMLtags' ) { $sm = strlen( $textWithHtmlSm ); $lg = round( strlen( $textWithHtmlLg ) / 1000 ) . 'K'; $benches["Sanitizer::removeHTMLtags (input: $sm)"] = function () use ( $textWithHtmlSm ) { Sanitizer::removeHTMLtags( $textWithHtmlSm ); }; $benches["Sanitizer::removeHTMLtags (input: $lg)"] = function () use ( $textWithHtmlLg ) { Sanitizer::removeHTMLtags( $textWithHtmlLg ); }; } if ( !$method || $method === 'stripAllTags' ) { $sm = strlen( $textWithHtmlSm ); $lg = round( strlen( $textWithHtmlLg ) / 1000 ) . 'K'; $benches["Sanitizer::stripAllTags (input: $sm)"] = function () use ( $textWithHtmlSm ) { Sanitizer::stripAllTags( $textWithHtmlSm ); }; $benches["Sanitizer::stripAllTags (input: $lg)"] = function () use ( $textWithHtmlLg ) { Sanitizer::stripAllTags( $textWithHtmlLg ); }; } $this->bench( $benches ); } } $maintClass = BenchmarkSanitizer::class; require_once RUN_MAINTENANCE_IF_MAIN;