|
| Дата |
|
USD/RUB | 88.6852 | BTC/USD | 67794.8860 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
31.10.2010, 10:50
|
Start Post: ситывание большого числа файлов
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
|
какой способ для считывание 100k+ текстовых файлов, самый быстрый ?
del
тормозилось походу потому что считывал в переменную
при записи в файл и последуюющем считывании из него, работает быстрее
Последний раз редактировалось qazxcvbnm; 31.10.2010 в 11:01.
|
|
|
31.10.2010, 14:14
|
#12
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
удаление слов с лишними символами
|
|
|
31.10.2010, 14:14
|
#13
|
учу php
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
|
Цитата:
Сообщение от pina
Бля тупею... Вот эта часть меня чета накаляет...
...
|
Да там много чего "накаляет". Автор, огласи задачу, скажи что у тебя есть и что ты хочешь получить.
Вот эту функцию php посмотри
http://php.net/manual/en/function.str-word-count.php
__________________
Подпись??? Не продам!
|
|
|
31.10.2010, 14:22
|
#14
|
учу php
Регистрация: 04.04.2008
Сообщений: 1,162
Бабло: $68290
|
Цитата:
Сообщение от qazxcvbnm
удаление слов с лишними символами
|
условно..:
//читаем файл
$s = file_get_contens(.any.);
//получаем все слова
$words = str_word_count($s, 1);
unset($s);
//удаляем плохие
foreach ($words as $id => $word) {
if (strpos($word, .any.)) unset($words[$id]);
}
//записываем в файл
$fp = fopen(.any., 'w');
fwrite($fp, implode("\n", $words));
fclose($fp);
__________________
Подпись??? Не продам!
|
|
|
31.10.2010, 14:22
|
#15
|
хде мой компот?!
Регистрация: 07.01.2008
Сообщений: 327
Бабло: $31276
|
PHP код:
preg_match("/[^a-z\-\']/", $content[$content_c])
вот эта часть даст в результате 0 если в слове только символы a-z и -
отрицание (!)
даст 1 только если в слове есть a-z и -, если в слове есть другие символы выдаст 0.
Если выдает 0, то уже вторая часть IF не рассматривается, т.к. выражение заведомо ложно. Если будет 1, то вторая часть IF имеет смысл только в случае двух или более подряд идущих тире(-).
Это только одна строка) Могу кстати и ошибаться...
|
|
|
31.10.2010, 14:35
|
#16
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
JMen удаление лишних символов это часть того кода который напрягает pina
задача - посчитать статистику слов в 110k английских текстах
из-за ограничения на оперативную память считается только для 28k текстов
pina с регулярками всё нормально, вопрос в том почему массив требует в 10 раз больше памяти чем надо
|
|
|
31.10.2010, 14:44
|
#17
|
хде мой компот?!
Регистрация: 07.01.2008
Сообщений: 327
Бабло: $31276
|
Цитата:
Сообщение от qazxcvbnm
JMen удаление лишних символов это часть того кода который напрягает pina
задача - посчитать статичтику слов в 110k английских текстах
из-за ограничения на оперативную память считается только для 28k текстов
pina с регулярками всё нормально, вопрос в том почему массив требует в 10 раз больше памяти чем надо
|
минимум занимаемой памяти:
8*17000000*4 = 518мегабайт
8 - средняя длина слова
17000000 - приблизительное кол-во слов
4 - байта под один символ
---------------------------------------------
объясни задачу того кода который я в первой мессаге запостил, ибо смысла его я до сих пор не понимаю
|
|
|
31.10.2010, 14:49
|
#18
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
Цитата:
Сообщение от pina
минимум занимаемой памяти:
8*17000000*4 = 518мегабайт
8 - средняя длина слова
17000000 - приблизительное кол-во слов
4 - байта под один символ
|
ну даже если по 4 байта, то всё равно не 2 гектара как у меня
Цитата:
Сообщение от pina
объясни задачу того кода который я в первой мессаге запостил, ибо смысла его я до сих пор не понимаю
|
задача выбрать в списке слов те которые содержат буквы, тире и апострофы, не более 2 небуквенных символов, которые не идут подряд + слова должны начинаться и заканчиваться буквами
|
|
|
31.10.2010, 15:05
|
#19
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
так ты же пытаешься что-то там сортировать, считать и прочие операции над массивом - это же все тоже резервирование памяти.
и используй unset где нужно и возможно.
А где код обрывается? в первом цикле?
|
|
|
31.10.2010, 15:29
|
#20
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
Цитата:
Сообщение от chesser
так ты же пытаешься что-то там сортировать, считать и прочие операции над массивом - это же все тоже резервирование памяти.
и используй unset где нужно и возможно.
|
сделал unset всё равно памяти жрётся столько же
Цитата:
$content_size = sizeof($content);
for ($content_c=0; $content_c<$content_size; $content_c++)
{
if (!preg_match("/[^a-z\-\']/", $content[$content_c]) && !preg_match("/[^a-z]{2,}/", $content[$content_c]))
{
$x = $content[$content_c];
$content[$content_c] = preg_replace("/[^a-z]/", "*", $content[$content_c]);
if (substr_count($content[$content_c], '*') <= 2 && !stristr(' '.$content[$content_c], ' *') && !stristr($content[$content_c].' ', '* ') && $content[$content_c] != '')
{
$result[] = $x;
}
}
unset($content[$content_c]);
}
|
Цитата:
Сообщение от chesser
А где код обрывается? в первом цикле?
|
какой код ?
|
|
|
31.10.2010, 15:56
|
#21
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
в этом месте отсутствие/присутствие unset не критично. Я говорил про операции ниже: array_count_values, asort, array_reverse, sort
К примеру, у тебя есть строка:
$new_array_x = array_count_values($result);
ты тут над 500мб массивом(ну примерно) применил тяжелую функцию, но это х с ней.... после чего ты оставил жить эту переменную и создал еще одну, примерно такую же размером, так? вот тут полезно сделать unset($result) раз ты ее не используешь дальше.
а про код.... в каком конкретно месте у тебя код выдает ошибку? как я понял выдается ошибка о нехватке памяти, где именно?
мы ж скрипт твой не запускаем, а чисто визуально
|
|
|
|