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

Сделал два файла, один подключался к базе, считывал заголовок этого блога, выводил его. Второй считывал файл в переменную и далее грепом выбирал заголовок. Результаты не в пользу бд: разброс значений от 0,047 мс до 0,128мс. Файлы стабильно показывали 0,05мс.
Интересовала скорость простого запроса, без сложных условий выборки, хотя и по файлам через системный вызов можно grep’ом отфильтровать как надо.

Усредненные результаты 10 запусков  обоих файлов:
БД: ~0.0832мс
Файл: ~0.0505мс

Сами скрипты:

$ cat testdb.php
<?php
$link = mysql_connect('localhost', 'db_user', 'db_pass');
mysql_select_db('db_name', $link);
$query =
mysql_query("SELECT option_value
FROM `wp_options` WHERE `option_id` = 2;");
$result = mysql_result($query, NULL);
echo $result;
mysql_close($link);
?>

$ cat testf.php
<?php
$name = exec("cat test.txt | grep Alex");
echo $name;
?>

Подсчитывал время так:

time php script.php

Еще несколько ссылочек.

11 responses


Do you want to comment?

Comments RSS and TrackBack Identifier URI ?

Довольно интересный материал… Благодарю,  Александр.

Май 9, 2009 5:19 пп

отлично, доверить передачу пользователю параметра для подстановки выполнения в коммандную строку :)

Май 9, 2009 6:38 пп

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

Май 9, 2009 6:52 пп

lessless, тут как бы нет призыва использовать файлы вместо бд. А параметры подстановки можно генерить и без участия пользователя, в базу же они генерятся.
Тимофей Старицкий, ну я же написал там, что интересует скорость простого запроса без вложенных условий и конструкций ) А так да, все верно.

Май 9, 2009 8:25 пп

Никогда не слышал, чтоб базы были быстрее файлов. Именно поэтому кэш хранят в файлах, а не в базе. Плюс базы в том,  что позволяет структуризовать информацию.

Май 11, 2009 5:49 пп

Ad1ce, базы быстрее. И чем сложнее требуется выборка, тем сильнее разница по скорости. Браузеры хранят кеш в файлах потому что кеш это и есть хтмл файлы, которые запрашиваются при совпадении урла с айди, которые кстати хранятся уже в базе (у меня так, линукс/фаерфокс, под виндой в реестре наверно хранятся). Да и скорость для кеша какбы не главный показатель.
Под линухом кстати много прог юзают базы, тот же amarok, rhythmbox. Даже ася ))

Май 11, 2009 6:15 пп

Тест хороший, но смысла в нем нет. На «боевом» сервере я бы не стал позволять к выполнению exec. Более актуальный тест будет при использовании php-функций для работы с файлами.

Май 13, 2009 10:23 дп

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

Май 13, 2009 11:30 дп

читал на форумах что файлы быстрей чем с БД, а тут еще и эксперемент доказал, так что выводы можно строить, хотя файлы больше места на хосте занимают.. вроде как..

Май 15, 2009 11:16 пп

wlad2, файлы занимают меньше места, база сама тоже ведь файл. Файлы проиграют базе при сложных выборках + тут системный вызов идет, а его не очень хорошо давать юзерам.

Май 15, 2009 11:23 пп

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

Июль 5, 2010 11:38 пп

Comment now!
















Trackbacks

1