Насколько точный Система. Диагностика. Секундомер?

MySQL: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с ... at line ...

Эта ошибка часто возникает из-за того, что вы забыли правильно удалить данные, переданные в MySQL-запрос .

Пример того, что не делать («Плохая идея»):

$query = "UPDATE `posts` SET my_text='{$_POST['text']}' WHERE id={$_GET['id']}";
mysqli_query($db, $query);

Этот код может быть включен в страницу с формой для отправки с URL-адресом например http://example.com/edit.php?id=10 (для редактирования сообщения n ° 10)

Что произойдет, если представленный текст содержит одинарные кавычки ? $query закончится:

$query = "UPDATE `posts` SET my_text='I'm a PHP newbie' WHERE id=10';

И когда этот запрос будет отправлен в MySQL, он будет жаловаться, что синтаксис неверен, потому что в середине есть отдельная одинарная кавычка.

Чтобы избежать таких ошибок, вы ДОЛЖНЫ всегда избегать данных перед использованием в запросе.

Экранирование данных перед использованием в SQL-запросе также очень важно, потому что если вы этого не сделаете, ваш скрипт будет быть открытым для инъекций SQL. SQL-инъекция может привести к изменению, потере или изменению записи, таблицы или всей базы данных. Это серьезная проблема безопасности!

Документация:

28
задан Daniel Daranas 19 July 2013 в 09:50
поделиться

6 ответов

Почему Вы не представляете свой код вместо того, чтобы фокусироваться на микросравнительных тестах?

существуют некоторые хорошие профилировщики С открытым исходным кодом как:

1
ответ дан Jafin 28 November 2019 в 03:43
поделиться

Во-первых, точный , конечно, не возможное или значимое понятие при разговоре о времени или пространстве, так как никакое эмпирическое измерение физической величины никогда не может симулировать быть точным.

113-секундный, David Bolton статья блога может быть полезной. Я заключаю в кавычки:

, Если это было синхронизировано со счетчиком высокого разрешения тогда, это будет с точностью до микросекунд. Это на самом деле с точностью до наносекунд (10-9 секунд, т.е. одна миллиардная секунды), но существует такое другое продолжение материала, что точность наносекунды действительно немного бессмысленна. При выполнении синхронизации или сравнительного тестирования кода, необходимо сделать много выполнений и занять среднее время - из-за других процессов, работающих в соответствии с Windows, сколько свопинга к диску происходит и т.д., значения между двумя выполнениями могут варьироваться.

2
ответ дан Daniel Daranas 28 November 2019 в 03:43
поделиться

MSDN имеет некоторый пример с секундомера. У них также есть он показывающий, насколько точный это в течение Наносекунд. Надежда это помогает!

0
ответ дан Jab 28 November 2019 в 03:43
поделиться

В дополнение к seconding совет HUAGHAGUAH выше, я добавил бы, что необходимо ОЧЕНЬ скептически относиться к микросравнительным тестам в целом. В то время как сфокусированное на завершении тестирование производительности имеет законное место, очень легко настроить неважную деталь. Так запишите и проверьте код, который разработан для удобочитаемости и ясности, затем представьте его для обнаружения, где горячие точки (или являются ли там какой-либо, который стоит взволновать о), и затем настройте (только) те части.

я вспоминаю работу с программистом, который микрооптимизировал немного кода, который выполнился, в то время как система ожидала человеческого входа. Экономия времени абсолютно исчезла в задержке между нажатиями клавиши!

0
ответ дан joel.neely 28 November 2019 в 03:43
поделиться

Я только что написал статью, в которой объясняется, как необходимо выполнить настройку теста, чтобы получить высокую точность (лучше 0,1 мс) секундомера. Думаю, это должно все объяснить.

http://www.codeproject.com/KB/testing/stopwatch-measure-precise.aspx

19
ответ дан 28 November 2019 в 03:43
поделиться

Класс секундомера возвращает разные значения в разных конфигурациях, поскольку частота зависит от установленного оборудования и операционной системы.

Используя класс секундомера, мы можем иметь только приблизительную оценку времени выполнения. И для каждого выполнения он возвращает разное значение, поэтому мы должны взять среднее значение для разного выполнения.

Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

2
ответ дан 28 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: