#php #mysql #optimization #syntax
#php #mysql #оптимизация #синтаксис
Вопрос:
Хотя я много искал в Интернете, я еще не совсем нашел ответ. В PHP вы можете оптимизировать свой вывод, например, путем ввода
echo 'This is a sentence by ',$name,' which is fast';
вместо
echo 'This is a sentence by $name which is very inefficient';
Мой базовый пример кода
$server=english
mysql_query("INSERT INTO uz(id,email,pw,cook) VALUES('$id','$mail','$pw','$cook')");
Который использует двойные кавычки и имена переменных внутри операторов. Есть ли способ оптимизировать это или это «лучшая» версия? Каждая попытка, которую я пробовал, приводила к ошибкам mysql.
Комментарии:
1. ваш второй пример не будет работать. Переменные заменяются только в двойных кавычках.
2. Если вы не выполняете операцию размером с facebook, вы не увидите абсолютно никакой разницы между этими строками. И если вы используете facebook, вы сэкономите, возможно, несколько минут процессорного времени в год.
3. Время, необходимое PHP для анализа этой строки 100 наносекунд, может быть, несколько микросекунд. Запрос MySQL = от десятков до сотен миллисекунд (или, возможно, минут!), В зависимости от набора данных. Неправильный конец для оптимизации.
Ответ №1:
Это не имеет значения.
Такого рода оптимизация не оказывает никакого реального влияния на вашу производительность. Разница в производительности между различными методами конкатенации составляет микросекунды. Они вообще не играют никакой роли в реальном мире.
Вместо этого используйте то, что наиболее читаемо и наиболее соответствует вашему стилю кодирования.
То же самое касается примера echo, который вы показываете. С точки зрения производительности нет заметной разницы, если вы не запустите его 100 000 раз (в этом случае вы все равно будете что-то делать неправильно). Если хотите, используйте свои собственные тесты microtime()
.
Комментарии:
1. 1. Большие затраты на выполнение запросов — это накладные расходы сети и ожидание ответа mysql в миллисекундах или даже секундах — несколько наносекунд интерполяции строк — это наименьшее из ваших беспокойств.
Ответ №2:
правдивая обработка в микросекундах; окружение переменных в расширяющихся строках с {}
помощью сэкономит синтаксическому анализатору один или два цикла, а также сократит путаницу между константами и ассоциативными ключами массива при использовании.
Например:
$string = 'hi ' . $name . ' how are you?'; //fast
$string = "hi $name how are you?"; //very slightly slower
$string = "hi {$name} how are you?"; //very slightly faster than second example
$string = 'hi ' . $person['name'] . ' how are you?'; //fast
$string = "hi $person[name] how are you?"; //slightly slower and prone constant clashes
$string = "hi {$person['name']} how are you?"; //very slightly faster and not prone to clashes
во втором примере с ключом массива вы можете столкнуться с проблемами, если const name
где-то объявлено a, поскольку интерпретатор не знает, на какой из них вы ссылаетесь, и использует константу по умолчанию.
Что касается базы данных, вы можете оптимизировать свой запрос, используя «`» вокруг имен полей и таблиц, что защищает от столкновения ключевых слов, а также обеспечивает более быструю интерпретацию (все еще в микросекундах).
Например:
mysql_query("SELECT `id`,`name`,`date` FROM `table` WHERE `id` = {$id}");
Комментарии:
1. echo с запятыми действительно работает. это означает, что строки выводятся без предварительной конкатенации, и это немного быстрее, чем использование точки для конкатенации строк перед выводом. см. Руководство php.net/manual/en/function.echo.php