Nö. lscpu behauptet:
AMD Ryzen 7 2700 Eight-Core Processor
Das System ist aber so konfiguriert, dass der wegen der kurzen Belastung nicht erst aus dem Stromsparmodus geht.
CPU MHz: 1550.000
Stepping: 2
Frequenzanhebung: aktiviert
CPU MHz: 1550.000
und ich hatte php-xdebug an Start. Das ha ich jetzt mal abgeschaltet:
Verbesserungen: (immer noch nicht genug getestet!)
<?php
### file: mb_trim.php
if ( ! function_exists ( 'mb_trim' ) ) {
function mb_trim( $string, $toTrim ) {
if ( '' == $string ) return '';
if ( ! is_array( $toTrim ) ) {
$arToTrim = mb_str_split( $toTrim );
}
if ( ! count( $arToTrim ) ) return $string;
$arString = mb_str_split( $string );
$changed = true;
while ( $changed ) {
$changed = false;
if ( in_array( $arString[ 0 ], $arToTrim ) ) {
array_shift( $arString );
if (0 == count( $arString ) ) return '';
$changed = true;
}
if ( in_array( $arString[ count( $arString ) -1 ], $arToTrim ) ) {
array_pop( $arString );
if (0 == count( $arString ) ) return '';
$changed = true;
}
}
return implode( '', $arString );
}
} else {
trigger_error( 'The function "mb_trim" exists! Pleace check your script(s)!', E_USER_ERROR );
}
if ( ! function_exists ( 'mb_rtrim' ) ) {
function mb_rtrim( $string, $toTrim ) {
if ( '' == $string ) return '';
if ( ! is_array( $toTrim ) ) {
$arToTrim = mb_str_split( $toTrim );
}
if ( ! count( $arToTrim ) ) return $string;
$arString = mb_str_split( $string );
$changed = true;
while ( $changed ) {
$changed = false;
if ( in_array( $arString[ count( $arString ) -1 ], $arToTrim ) ) {
array_pop( $arString );
if (0 == count( $arString ) ) return '';
$changed = true;
}
}
return implode( '', $arString );
}
} else {
trigger_error( 'The function "mb_rtrim" exists! Pleace check your script(s)!', E_USER_ERROR );
}
if ( ! function_exists ( 'mb_ltrim' ) ) {
function mb_ltrim( $string, $toTrim ) {
if ( '' == $string ) return '';
if ( ! is_array( $toTrim ) ) {
$arToTrim = mb_str_split( $toTrim );
}
if ( ! count( $arToTrim ) ) return $string;
$arString = mb_str_split( $string );
$changed = true;
while ( $changed ) {
$changed = false;
if ( in_array( $arString[ 0 ], $arToTrim ) ) {
array_shift( $arString );
if (0 == count( $arString ) ) return '';
$changed = true;
}
}
return implode( '', $arString );
}
} else {
trigger_error( 'The function "mb_ltrim" exists! Pleace check your script(s)!', E_USER_ERROR );
}
Tests:
<?php
require_once ('mb_trim.php');
$rounds = 100000;
$nbsp = chr(0xC2).chr(0xA0);
$string = '🛠' . $nbsp . 'äüöödäipusö🛠' . $nbsp . 'öäü';
$toTrim = '🛠öä' . $nbsp . 'ü';
echo 'Zu durchsuchender String (HTML-kodiert:)'. PHP_EOL;
echo "\t". '"' . htmlentities( $string, ENT_HTML5 ) .'"' . PHP_EOL . PHP_EOL;
echo' Zu entfernende Zeichen: (HTML-kodiert:)' . PHP_EOL;
echo "\t". '"' . htmlentities( $toTrim, ENT_HTML5 ) .'"' . PHP_EOL . PHP_EOL;
echo 'Ergebnis für mb_trim(): "' . mb_trim( $string, $toTrim ) . '"' . PHP_EOL;
echo 'Ergebnis für mb_rtrim(): "' . mb_rtrim( $string, $toTrim ) . '"' . PHP_EOL;
echo 'Ergebnis für mb_ltrim(): "' . mb_ltrim( $string, $toTrim ) . '"' . PHP_EOL;
echo PHP_EOL . 'Zeitmessung:'. PHP_EOL;
####################################################
echo PHP_EOL . 'mb_trim:' .PHP_EOL;
$start = microtime(true);
for ($i=0; $i<$rounds; $i++) {
mb_trim( $string, $toTrim ) . PHP_EOL;
}
$time = ( microtime(true) - $start ) ;
echo $time . PHP_EOL;
echo round( $time * 1000) . ' Millisekunden für ' . $rounds . ' Runden. (' . round($time/$rounds * 1000000) . ' Mikrosekunden pro Aufruf).' . PHP_EOL;
####################################################
echo PHP_EOL . 'mb_rtrim:' . PHP_EOL;
$start = microtime(true);
for ($i=0; $i<$rounds; $i++) {
mb_rtrim( $string, $toTrim ) . PHP_EOL;
}
$time = ( microtime(true) - $start ) ;
echo $time . PHP_EOL;
echo round( $time * 1000) . ' Millisekunden für ' . $rounds . ' Runden. (' . round($time/$rounds * 1000000) . ' Mikrosekunden pro Aufruf).' . PHP_EOL;
####################################################
echo PHP_EOL . 'mb_ltrim:' . PHP_EOL;
$start = microtime(true);
for ($i=0; $i<$rounds; $i++) {
mb_ltrim( $string, $toTrim ) . PHP_EOL;
}
$time = ( microtime(true) - $start ) ;
echo $time . PHP_EOL;
echo round( $time * 1000) . ' Millisekunden für ' . $rounds . ' Runden. (' . round($time/$rounds * 1000000) . ' Mikrosekunden pro Aufruf).' . PHP_EOL;
Ausgaben von php -dxdebug.mode=off test_mb_trim.php
Zu durchsuchender String (HTML-kodiert:)
"🛠 äüöödäipusö🛠 öäü"
Zu entfernende Zeichen: (HTML-kodiert:)
"🛠öä ü"
Ergebnis für mb_trim(): "däipus"
Ergebnis für mb_rtrim(): "🛠 äüöödäipus"
Ergebnis für mb_ltrim(): "däipusö🛠 öäü"
Zeitmessung:
mb_trim:
0.26273894309998
263 Millisekunden für 100000 Runden. (3 Mikrosekunden pro Aufruf).
mb_rtrim:
0.15137410163879
151 Millisekunden für 100000 Runden. (2 Mikrosekunden pro Aufruf).
mb_ltrim:
0.16421294212341
164 Millisekunden für 100000 Runden. (2 Mikrosekunden pro Aufruf).
Jetzt lachst Du nicht mehr :-)