Re[45]: Зачем нужны циклы если есть рекурсивные функции
От: Pavel Dvorkin Россия  
Дата: 02.10.09 10:32
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Не имеет. По-вашему, например, решение уравнения пьезопроводности тоже работа со строками, если мы читаем входные данные из текстового файла, ага?


Если исходные данные читаем из текстовых строк и парсим их — да. Но это к делу не относится.

K>>>Мы читаем байты из потока, разбивая на блоки по разделителям и организуем в таблицу

PD>>Пожалуйста, подробнее про эти таблицы. Сколько будет в них элементов

K>Сколько значений разделенных запятыми, столько и блоков.


Отлично.

PD>Дан файл в формате CSV. 10 полей на строчку, есть пустые поля. Поля не длинные, обычно 5-10 символов. Количество строк известно, порядка 5 миллионов. Размер файла 200 Мб, известен точно.


5 миллионов строк. 10 полей на строку. 50 миллионов полей.

PD>>и каков их размер в байтах ?


K>Не имеет никакого значения.


Имеет. Потому что я написал в условии

PD>На вспомогательные структуры, так и быть, еще 50-70 Мб дам.



При таких условиях на каждый из этих блоков получается не более чем по 1, от силы 2 байта. А на блок надо хоть ссылку, хоть указатель оформить. А ее (его) размер 4 байта. А длину блока хранить будем ? Если в формате, как в string, то это еще 4 байта, итого 8. 8 байт на 50 миллионов полей — 400 Мб.

Понял теперь, куда я веду ?


K>На этом, в общем-то можно было и закончить.


Ты сначала с размерами вспомогательных данных разберись, а потом и закончим.

PD>>Но из этого не следует, что нет работы с ними.


K>К обсуждаемой теме это отношения не имеет.


Ну-ну. Я-то ведь в свои 50-70 Мб уложусь.

K>А, ну понятно, вы сейчас будете ждать, пока я подсчитаю все биты до последнего.


Я их уже подсчитал, хоть и не до последнего. Кое-что еще добавится.

K>Ну, например, списки номеров строк таблицы сортированные по соответствующему столбцу.


Как эти списки делать будешь — не спрашиваю, а вот размер оценим.

Пусть 4 байта на элемент списка (что явно занижено, ну да ладно). Пусть только по первым 3 полям. А строк у нас 5 миллионов. Еще 20 Мб на каждую строку и каждый столбец. На 3 столбца — 60 Мб.

Итого 400 Мб + 60 Мб = 460 Мб




>Так дело не пойдет. Сейчас вы решаете мою задачу с той же степенью конкретизации, что и я вашу.


Пока что решения нет. У меня дополнительных 500 Мб не имеется. Меня за такое решение выгонят сразу.


>А там видно будет. Биты считать не надо. Нужен асимптотический анализ сложности алгоритмов и расходов памяти.


Все ясно. Вместо программы я должен заказчику представить асимптотический анализ сложности алгоритмов и расходов памяти. Это будет мое последнее представление в работе с ним


PD>>Смотря что под операциями понимать


K>Понимать следует:

K>конкатенацию,
K>выделение подстроки,
K>удаление подстроки,
K>вставку подстроки.

А парсинг уже не входит ? String.Split из класса String выкинуть ? А ведь я именно задачу на парсинг и представил.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.