Я ищу код, который обрабатывает около 7 тыс. Элементов в CSV. Импортер CSV проверяет дубликаты, и часть этого процесса предназначена для каждой строки, которая проверяет все остальные строки, которые были обработаны для дубликатов. Это означает, что он делает что-то вроде ...strtolower (trim()) == strtolower (trim()) медленный
foreach ($users as $possibleDuplicate) {
if (strtolower(trim($user->first_name)) == strtolower(trim($possibleDuplicate->first_name)) && strtolower(trim($user->last_name)) == strtolower(trim($possibleDuplicate->last_name))) {
}
}
игнорировать ужасные исполнения идеи положить на место по этому сценарию (я не писал). Кажется, что strtolower(trim())
производит довольно сильный удар по моему импорту. Я искал гораздо более эффективную и быструю замену. Я еще не провел никаких тестов производительности, но планирую завтра. Я надеялся, что кто-то здесь сможет пролить свет на некоторую информацию, которую они уже имеют о методах, которые могут быть быстрее, например preg_match()
.
Обновление: Я не хочу увеличивать производительность этого цикла, я признаю, что методы перемещения вне диапазона foreach значительно улучшат производительность.
Я могу вам сказать, что регулярное выражение, безусловно, будет медленнее, чем 'strtolower' – Machavity
Возможно использовать [' strcasecmp'] (http://php.net/manual/en/function .strcasecmp.php) (сравнение строк без учета регистра)? –
Вы используете их несколько раз через эти функции? Если это так, вы можете обрабатывать их все и хранить на карте, а затем извлекать оттуда или делать это лениво, пока не найдете значения, не существующие на карте. – alex