Здравствуйте, 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 выкинуть ? А ведь я именно задачу на парсинг и представил.