|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64260.8938 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
02.02.2011, 02:52
|
#1
|
Senior Member
Регистрация: 26.08.2008
Адрес: UA
Сообщений: 2,941
Бабло: $402835
|
Выборка кеев с большых файлов. Как ускорить?
юзал примерно вот такой код:
PHP код:
$key = 'blabla'; $fout = fopen("result.txt","w+"); $fin = fopen("keys.txt",'r+'); while(!feof($fin)){ $fline = fgets($fin, 63); $templine = " ".trim($fline)." "; $tempkey = " ".trim($key)." "; if (strpos($templine,$tempkey) <> FALSE) {fputs ($fout,$fline);} } fclose($fin); fclose($fout);
если база пару гигов - совсем не радует. Как можно ускорить или есть другие решения (на других языках или софт)?
|
|
|
02.02.2011, 02:58
|
#2
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
ну так то баш побыстрее будет, седом например
глянь решения, я там вроде какие-то кеи чистил от стоп слов, задача похожая вроде
а в бд грузить смысла нет, системные команды надо юзать полюбому
Цитата:
if (strpos($templine,$tempkey) <> FALSE) {fputs ($fout,$fline);}
|
по-моему тут серьезный баг, вместо <> надо использовать !==, иначе скрипт будет отсекать все строки, начинающиеся с кея
Последний раз редактировалось chesser; 02.02.2011 в 03:08.
|
|
|
02.02.2011, 03:06
|
#3
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
|
Цитата:
ну так то баш побыстрее будет, седом например
|
на много?
|
|
|
02.02.2011, 03:09
|
#4
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от imgreen
на много?
|
намного
хотя если прям скорость нужна и РАМы много, можно в память все загрузить в php
а если рамы столько нет, то в баше быстрее будет
|
|
|
02.02.2011, 03:10
|
#5
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
|
Цитата:
Сообщение от chesser
намного
|
а поточнее?
|
|
|
02.02.2011, 03:21
|
#6
|
white powder
Регистрация: 29.04.2007
Сообщений: 2,692
Бабло: $370670
|
поиск по ключу - это индекс, индекс - это база.
либо свой индекс строить.
|
|
|
02.02.2011, 03:32
|
#7
|
Senior Member
Регистрация: 26.08.2008
Адрес: UA
Сообщений: 2,941
Бабло: $402835
ТС -->
|
ТС
нету линукса под рукой, поставил виндузятный grep
примерно в 50 раз быстрее.
спасибо. но думаю и это не предел
|
|
|
02.02.2011, 03:32
|
#8
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
|
Цитата:
Сообщение от Юнга
поиск по ключу - это индекс, индекс - это база.
либо свой индекс строить.
|
там наверное не точное вхождение ключа
но если точное, то +1 за базу =)
|
|
|
02.02.2011, 03:37
|
#9
|
white powder
Регистрация: 29.04.2007
Сообщений: 2,692
Бабло: $370670
|
Цитата:
Сообщение от imgreen
там наверное не точное вхождение ключа
но если точное, то +1 за базу =)
|
судя по коду там лайк запрос типа LIKE '% keyword %'.
тут еще вопрос соотношения ресурсов - быстрый винт и/или много памяти.
RedHead, сколько кеев в базе и сколько ищет в среднем на текущем железе?
|
|
|
02.02.2011, 03:38
|
#10
|
Member
Регистрация: 11.09.2010
Сообщений: 56
Бабло: $7755
|
$tempkey = " ".trim($key)." ";
зачем же каждый раз операцию выполнять. можно в самом начале один раз)
|
|
|
|