@ 2023-06-01T13:05:34Z <?php
// Most likely front-end scenario.
function is_admin() {
return true;
}
function wp_is_json_request() {
return false;
}
function get_locale() {
return 'en_US';
}
function get_user_locale() {
return 'en_US';
}
function apply_filters( $a, $b ) {
return $b;
}
function sanitize_locale_name( $a ) {
return $a;
}
function determine_locale_proposed() {
/**
* Filters the locale for the current request prior to the default determination process.
*
* Using this filter allows to override the default logic, effectively short-circuiting the function.
*
* @since 5.0.0
*
* @param string|null $locale The locale to return and short-circuit. Default null.
*/
$determined_locale = apply_filters( 'pre_determine_locale', null );
if ( $determined_locale && is_string( $determined_locale ) ) {
return $determined_locale;
}
if (
is_admin()
|| ( isset( $_GET['_locale'] ) && 'user' === $_GET['_locale'] && wp_is_json_request() )
) {
$determined_locale = get_user_locale();
} else {
$determined_locale = get_locale();
}
if ( isset( $GLOBALS['pagenow'] ) && 'wp-login.php' === $GLOBALS['pagenow'] ) {
if ( ! empty( $_GET['wp_lang'] ) ) {
$determined_locale = sanitize_locale_name( $_GET['wp_lang'] ) ?: $determined_locale;
} elseif ( ! empty( $_COOKIE['wp_lang'] ) ) {
$determined_locale = sanitize_locale_name( $_COOKIE['wp_lang'] ) ?: $determined_locale;
}
}
/**
* Filters the locale for the current request.
*
* @since 5.0.0
*
* @param string $locale The locale.
*/
return apply_filters( 'determine_locale', $determined_locale );
}
function determine_locale_proposed_v2() {
/**
* Filters the locale for the current request prior to the default determination process.
*
* Using this filter allows to override the default logic, effectively short-circuiting the function.
*
* @since 5.0.0
*
* @param string|null $locale The locale to return and short-circuit. Default null.
*/
$determined_locale = apply_filters( 'pre_determine_locale', null );
if ( $determined_locale && is_string( $determined_locale ) ) {
return $determined_locale;
}
if ( isset( $GLOBALS['pagenow'] ) && 'wp-login.php' === $GLOBALS['pagenow'] ) {
if ( ! empty( $_GET['wp_lang'] ) ) {
$determined_locale = sanitize_locale_name( $_GET['wp_lang'] );
} elseif ( ! empty( $_COOKIE['wp_lang'] ) ) {
$determined_locale = sanitize_locale_name( $_COOKIE['wp_lang'] );
}
}
if ( ! $determined_locale ) {
if (
is_admin()
|| ( isset( $_GET['_locale'] ) && 'user' === $_GET['_locale'] && wp_is_json_request() )
) {
$determined_locale = get_user_locale();
} else {
$determined_locale = get_locale();
}
}
/**
* Filters the locale for the current request.
*
* @since 5.0.0
*
* @param string $locale The locale.
*/
return apply_filters( 'determine_locale', $determined_locale );
}
determine_locale_proposed();
determine_locale_proposed_v2();
$its = 1e5;
$t = hrtime(true);
for ( $i = 0; $i++ < $its; )
determine_locale_proposed();
echo 'proposed : ', $old = ( hrtime(true)-$t ) / 1e9, "s\n";
$t = hrtime(true);
for ( $i = 0; $i++ < $its; )
determine_locale_proposed_v2();
echo 'proposed v2: ', $new = ( hrtime(true)-$t ) / 1e9, "s\n\n";
printf( 'Proposed v2 is %sx faster', number_format( $old / $new, 2 ) );
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.4.2 0.006 0.045 17.86 8.4.1 0.003 0.019 24.01 8.3.15 0.000 0.025 17.22 8.3.14 0.017 0.027 20.82 8.3.13 0.007 0.034 18.49 8.3.12 0.007 0.018 20.64 8.3.11 0.004 0.018 16.53 8.3.10 0.003 0.020 24.06 8.3.9 0.003 0.019 26.77 8.3.8 0.003 0.025 16.63 8.3.7 0.007 0.034 16.58 8.3.6 0.003 0.037 18.55 8.3.5 0.010 0.043 18.46 8.3.4 0.013 0.026 20.52 8.3.3 0.017 0.023 20.95 8.3.2 0.003 0.019 24.18 8.3.1 0.004 0.018 24.66 8.3.0 0.003 0.019 26.16 8.2.27 0.017 0.034 19.04 8.2.26 0.013 0.028 16.87 8.2.25 0.006 0.015 18.45 8.2.24 0.007 0.014 18.91 8.2.23 0.008 0.015 20.94 8.2.22 0.003 0.019 37.54 8.2.21 0.006 0.034 26.77 8.2.20 0.007 0.024 16.38 8.2.19 0.010 0.040 16.58 8.2.18 0.013 0.035 16.50 8.2.17 0.014 0.041 18.91 8.2.16 0.007 0.033 22.96 8.2.15 0.004 0.018 25.66 8.2.14 0.007 0.014 24.66 8.2.13 0.003 0.019 26.16 8.2.12 0.004 0.018 19.36 8.2.11 0.004 0.028 21.00 8.2.10 0.007 0.023 17.91 8.2.9 0.007 0.018 18.03 8.2.8 0.006 0.018 18.21 8.2.7 0.000 0.025 17.50 8.2.6 0.007 0.029 17.63 8.2.5 0.020 0.016 17.12 8.2.4 0.013 0.022 17.63 8.2.3 0.012 0.024 17.38 8.2.2 0.008 0.027 17.63 8.2.1 0.014 0.021 17.50 8.2.0 0.008 0.025 17.38 8.1.31 0.010 0.037 16.32 8.1.30 0.010 0.013 18.44 8.1.29 0.007 0.018 18.88 8.1.28 0.010 0.037 25.92 8.1.27 0.007 0.014 24.66 8.1.26 0.007 0.015 26.35 8.1.25 0.009 0.012 28.09 8.1.24 0.011 0.035 17.77 8.1.23 0.006 0.019 20.99 8.1.22 0.004 0.021 17.77 8.1.21 0.007 0.017 18.77 8.1.20 0.000 0.024 17.35 8.1.19 0.016 0.024 16.72 8.1.18 0.016 0.019 17.13 8.1.17 0.014 0.021 17.00 8.1.16 0.013 0.020 17.00 8.1.15 0.012 0.021 17.13 8.1.14 0.011 0.022 17.13 8.1.13 0.003 0.031 17.00 8.1.12 0.016 0.016 17.25 8.1.11 0.010 0.023 17.38 8.1.10 0.004 0.029 17.38 8.1.9 0.004 0.029 17.13 8.1.8 0.011 0.023 17.38 8.1.7 0.009 0.025 17.25 8.1.6 0.010 0.024 17.38 8.1.5 0.010 0.024 17.38 8.1.4 0.007 0.026 17.63 8.1.3 0.013 0.021 17.50 8.1.2 0.016 0.019 17.38 8.1.1 0.017 0.023 17.11 8.1.0 0.012 0.024 17.25 8.0.30 0.006 0.019 20.11 8.0.29 0.004 0.030 16.88 8.0.28 0.017 0.027 16.60 8.0.27 0.014 0.024 16.75 8.0.26 0.012 0.025 16.52 8.0.25 0.010 0.028 16.62 8.0.24 0.007 0.030 16.52 8.0.23 0.009 0.028 16.75 8.0.22 0.015 0.023 16.72 8.0.21 0.011 0.025 16.73 8.0.20 0.010 0.028 16.88 8.0.19 0.012 0.027 16.63 8.0.18 0.014 0.024 16.62 8.0.17 0.012 0.024 16.75 8.0.16 0.014 0.027 16.73 8.0.15 0.007 0.030 16.63 8.0.14 0.006 0.029 16.63 8.0.13 0.009 0.026 16.75 8.0.12 0.010 0.024 16.72 8.0.11 0.016 0.019 16.62 8.0.10 0.012 0.024 16.63 8.0.9 0.016 0.019 16.52 8.0.8 0.010 0.026 16.73 8.0.7 0.010 0.026 16.75 8.0.6 0.003 0.029 17.05 8.0.5 0.007 0.030 16.52 8.0.3 0.010 0.026 16.74 8.0.2 0.005 0.032 16.75 8.0.1 0.012 0.025 16.63
preferences:dark mode live preview
30.74 ms | 403 KiB | 5 Q