regex — производительность tmpfs при доступе из переполнения стека

У меня есть веб-скрипт PHP, который принимает введенное пользователем регулярное выражение и использует его для поиска большого текстового файла (9,4 миллиона строк, около 160 МБ). На первой итерации моего сценария файл находился в обычной файловой системе, и когда мне нужно было найти его, я мог получить к нему доступ с помощью fopen / fgets и искать его построчно. В зависимости от сложности регулярного выражения, скрипт проходит через весь файл за 30-45 секунд.

Чтобы попытаться ускорить его, я установил раздел tmpfs размером 1 ГБ и переместил на него большой текстовый файл. Затем я изменил путь в скрипте PHP и надеялся увидеть немедленное улучшение. Однако скорость, с которой скрипт анализировал файл, не менялась, и при многократных запусках он иногда оказывался медленнее, чем при чтении файла из обычной файловой системы.

Кроме того, я попытался загрузить весь файл в оперативную память на PHP, но сначала вытащил его в массив, что улучшило время поиска примерно на 40%. К сожалению, это неприемлемый способ для меня, поскольку начальное время загрузки файла в массив довольно велико.

Все это происходит на виртуальном сервере с 12 ГБ ОЗУ, запущенным Debian 7, с nginx / php5-fpm.

Что происходит с моими tmpfs? Есть что-то, чего мне не хватает? Я предоставлю любую дополнительную информацию, необходимую.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]