PHP preg_match против ctype_

Я несколько раз читал, что использование функций ctype_xyz быстрее и лучше, чем использование регулярных выражений. Но я провел несколько тестов, и регулярные выражения стали намного быстрее.

См. Пример ниже:

PHP Version: 7.2

OS: Windows

<?php

$foo = '112312312312323';

$start_time = microtime(true);

for ($i = 0; $i < 10000; $i++) {
    $foo = $foo.'1';
    preg_match('/^[a-zA-Z0-9]+$/', $foo);
    // ctype_alnum($foo); 
}

$end_time = microtime(true);

echo 'Result: ' . ($end_time - $start_time);

С preg_match('/^[a-zA-Z0-9]+$/', $foo); на выходе будет Result: 0.094325065612793

С ctype_alnum($foo); вывод будет: Result: 1.8465659618378

Может кто-нибудь мне это объяснить?

Пробовал разные версии и ctype примерно вдвое быстрее sandbox.onlinephpfunctions.com/code/…

AbraCadaver 30.07.2018 17:04

Я запустил ваш скрипт на моей виртуальной машине, php 7.2 - регулярное выражение 0.06, ctype_alnum 0.02, поэтому в моем случае - ctype_alnum в 3 раза быстрее.

N.B. 30.07.2018 17:04

Похоже, на HHVM все наоборот, про 3v4l.org/fjSaZ#vhhvm-3220 я ничего не знаю. Прокрутить вниз.

AbraCadaver 30.07.2018 17:06

Поэтому мне следовало добавить, что я запускаю это в Windows. Так может в этом разница? В Unix / Linux ctype быстрее, а в Windows preg_match. Странный...

DragonSGA 30.07.2018 17:06

Честно говоря, вы бы когда-нибудь запускали PHP в производственной среде в Windows?

N.B. 30.07.2018 17:07

Конечно, я бы не стал, но вопрос не в этом;) Мне, к сожалению, приходится разрабатывать под windows

DragonSGA 30.07.2018 17:08

Oracle Virtualbox + Vagrant + Homestead, простой vagrant up, и вы можете разрабатывать под Windows, используя все замечательные вещи, которые дает нам Linux. Понятия не имею, можете ли вы это сделать, или, если вы знаете об этом, просто оставьте это на случай, если вы сочтете это полезным.

N.B. 30.07.2018 17:11

У меня есть WSL или VMware Workstation, а также ПК с Linux - в любом случае спасибо. Но опять же: мой вопрос только в том, ПОЧЕМУ он так себя ведет в Windows.

DragonSGA 30.07.2018 17:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
8
257
0

Другие вопросы по теме