[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимален ли алгоритм?
LRCenter
Есть csv-файл. Объём, допустим 10мб.
Необходимо найти определенную строку, например по значению одной из переменных массива строки и произвести с ней определенные действия.

Оптимален ли такой код?
Можно-ли как-нибудь его ускорить или уменьшить расход памяти?
$text = file("base.csv");
foreach ($text as $msv){
list($var1, $var2, $var3, $varn) = explode(";",$msv);
if ($var3 == $keyString){
#Операции с переменными строки
}}




Спустя 2 минуты, 51 секунда (19.11.2010 - 13:15) linker написал(а):
При жестком лимите памяти - не оптимален.

Спустя 1 минута, 43 секунды (19.11.2010 - 13:17) LRCenter написал(а):
А как можно оптимизировать?

Спустя 1 минута, 45 секунд (19.11.2010 - 13:18) vagrand написал(а):
считывай по одной строке при помощи fgets

Спустя 3 минуты, 52 секунды (19.11.2010 - 13:22) linker написал(а):
Либо fgets() и strpos(), либо fgetcsv() и цикл.

Спустя 9 минут, 8 секунд (19.11.2010 - 13:31) LRCenter написал(а):
ага, спасибо большое вам обоим, linker и vagrand.
С экономией памяти понятно. А на скорости как отразится такая смена алгоритма?

Спустя 5 минут, 39 секунд (19.11.2010 - 13:37) linker написал(а):
Вполне возможно. Но идеала не бывает, всегда в чем-то приходится проигрывать.

Спустя 3 минуты, 15 секунд (19.11.2010 - 13:40) LRCenter написал(а):
linker В смысле? По скорости проиграем при смене алгоритма?

Спустя 6 минут, 14 секунд (19.11.2010 - 13:47) LRCenter написал(а):
А как можно вывести объем выделенной и используемой памяти?

Спустя 11 минут, 52 секунды (19.11.2010 - 13:58) linker написал(а):
Вполне возможно, но без замеров сложно сказать.

Спустя 7 минут, 38 секунд (19.11.2010 - 14:06) LRCenter написал(а):
А какой функцией можно узнать объем выделенной памяти, а какой используемой?

Спустя 3 минуты, 39 секунд (19.11.2010 - 14:10) linker написал(а):
Выделенный объем - ini_get('memory_limit'), а используется в данный момент - memory_get_usage()

Спустя 3 минуты, 35 секунд (19.11.2010 - 14:13) LRCenter написал(а):
linker, спасибо еще раз.

Спустя 2 месяца, 10 дней, 3 часа, 56 минут, 59 секунд (1.02.2011 - 18:10) LRCenter написал(а):
А еще такой возник вопросик.
Допустим, в памяти висит массив - в нем данных, к примеру на 1Mб в тысяче элементов.
Нужно построчно записать в файл.
Что рациональнее объеденить implode-ом значения и записать разом? Или через цикл записать построчно?

Если работа скрипта прервется досрочно, до fclose(), при построчной записи сохранятся ил уже записанные строки, т.е. те по которым успел пройти цикл или нет?

А если записывать текст, объединенный из массива одним блоком, fwrite(), при разрыве запишет хоть что-то? или только: запишет все или ничего?


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.