Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.27;
Скачать: CL | DM;

Вниз

Как сделать строку длиной больше мильярда?   Найти похожие ветки 

 
Е-Моё имя ©   (2003-11-05 14:57) [0]

setlength кричит out of memory, то есть собственно не setlength, а getmem


 
panov ©   (2003-11-05 15:00) [1]

>Е-Моё имя © (05.11.03 14:57)
setlength кричит out of memory, то есть собственно не setlength, а getmem

Записывать в файл и работать со строкой по частям.


 
Е-Моё имя ©   (2003-11-05 15:05) [2]

то есть ограничение длины 2^32 просто теоретическое?


 
Е-Моё имя ©   (2003-11-05 15:08) [3]

то есть 2^31...


 
Е-Моё имя ©   (2003-11-05 15:09) [4]

в справке:
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters
WideString ~2^30 characters 4 bytes to 2GB Unicode characters;
multi-user servers and multi-language applications

и как сделать 2-гиговую строку?


 
panov ©   (2003-11-05 15:09) [5]

В системе все равно есть ограничение на выделяемую память. А вот какое - не знаю-)


 
Е-Моё имя ©   (2003-11-05 15:11) [6]

вона как... ну оперативки у мну 512
на винте десяток гиг есть...


 
Игорь Шевченко ©   (2003-11-05 15:11) [7]

Конечно теоретическое. Кроме строки в этих 2^31 должна еще программа находиться и библиотеки системные...


 
Ломброзо ©   (2003-11-05 15:11) [8]

Mapped files


 
Anatoly Podgoretsky ©   (2003-11-05 15:12) [9]

Е-Моё имя © (05.11.03 15:08) [3]
Да, ограничение системы и компилятора, в будущем будет 2^63
Эти два гигабайта подо все, не только под одну строку.


 
SPeller ©   (2003-11-05 15:15) [10]


>в будущем будет 2^63

9Х-овые винды уже не выдержат...


 
Anatoly Podgoretsky ©   (2003-11-05 15:17) [11]

9x да, а остальные давно выдерживают, но не Wintel, а Дельфи пока только для Wintel


 
vuk ©   (2003-11-05 15:18) [12]

А нафига это все?


 
Е-Моё имя ©   (2003-11-05 15:19) [13]

а как можно узнать максимально допустимый реальный размер строки?


 
Е-Моё имя ©   (2003-11-05 15:19) [14]


> vuk © (05.11.03 15:18) [12]

:)))
да вот, возникла задачка


 
Anatoly Podgoretsky ©   (2003-11-05 15:19) [15]

Ну например загнать 4 гб файл в строку и применить POS, это так один из вариантов.


 
vuk ©   (2003-11-05 15:20) [16]

to Е-Моё имя:
>да вот, возникла задачка
Ну так опишите задачу-то...


 
Е-Моё имя ©   (2003-11-05 15:21) [17]

файлик есть большой, больше гига длиной
TStrings.LoadFromStream не берет его...
придется наверное кусками...


 
vuk ©   (2003-11-05 15:23) [18]

to Е-Моё имя:
>придется наверное кусками...
Ну либо кусками либо Memory Mapped Files.


 
Anatoly Podgoretsky ©   (2003-11-05 15:23) [19]

Э тут другое дело, там расход памяти примерно в три раза больше, чем файл


 
Е-Моё имя ©   (2003-11-05 15:28) [20]

прога писалась для маленьких файлов, потому strinlist сделал
это обработка почтовых логов
а тут сбой был на мыльном сервере, письма многотысячекратно дублировались, файлик получился за гиг
прога скопытилась =))))))))
буду наверное filestream делать
когда для 1С логов обработку делал, знал, что будет файл большой-там у мну filestream с разбиением на строки
а тут засада получилась..


 
Anatoly Podgoretsky ©   (2003-11-05 15:30) [21]

Е-Моё имя © (05.11.03 15:28) [20]
Используй TextFile затраты по ресурсам минимальны


 
Е-Моё имя ©   (2003-11-05 15:32) [22]

хорошо, всем спасибо
:)))


 
panov ©   (2003-11-05 15:55) [23]

Ну для такой задачи самое простое логи в Бд загружать и там обрабатывать-)


 
Е-Моё имя ©   (2003-11-05 17:12) [24]

хорошо бы, да логи пишет чужая прога ((


 
Anatoly Podgoretsky ©   (2003-11-05 17:19) [25]

Е-Моё имя © (05.11.03 17:12) [24]
Так логи никто не советует писать, совет загружать в базу, если есть возможность то это лучший вариант по дальнейшей обработке


 
Е-Моё имя ©   (2003-11-05 17:38) [26]

аааа
понял!
так я именно это и делаю :))


 
Anatoly Podgoretsky ©   (2003-11-05 17:41) [27]

Ну тогда ReadLn самое экономичное


 
Е-Моё имя ©   (2003-11-05 17:41) [28]

сделал на filestream
вот уже полчаса наверное обрабатывается, примерно 200 метров обработалось... долго как-то... может сетка загружена...


 
Е-Моё имя ©   (2003-11-05 17:42) [29]

на readln - это больше изменений делать ;))
а времени даже на форум не хватает =)))


 
Anatoly Podgoretsky ©   (2003-11-05 17:45) [30]

Е-Моё имя © (05.11.03 17:41) [28]
Ты будешь всю обработку брать на себя, будет ли она у тебя оптимальнее чем в ReadLn?

Е-Моё имя © (05.11.03 17:42) [29]
Меньше, сейчас ты ищешь концы строк, после этого различий нет, парсинг строки


 
Е-Моё имя ©   (2003-11-05 17:48) [31]


> будет ли она у тебя оптимальнее чем в ReadLn?

нет конечно


> Меньше, сейчас ты ищешь концы строк, после этого различий
> нет, парсинг строки

меньше, потому что Ctrl+C/Ctrl+V :))

можно ради интереса сделать вариант с Readln
но думаю проблема в сети - проц загружен далеко не полностью, памяти как грязи.
исходный файл лежит на одном сервере, база на другом сервере.


 
Anatoly Podgoretsky ©   (2003-11-05 17:49) [32]

Хотя мне не видно твоей обработки, исхожу из общих случаев и сам обрабатывал логи, примерно такого размера, от моего апачи, месячный лог


 
Е-Моё имя ©   (2003-11-05 17:52) [33]

обработка простая - читаю кусочки и бью на строки
нужные строки обрабатываю
проблема вот в чем - какого размера сделать куски для чтения из потока?


 
panov ©   (2003-11-05 18:00) [34]

Ну насчет размера - кратное странице(по-моему 16к), не слишком большой, чтобы своппинга не было.


 
Е-Моё имя ©   (2003-11-05 18:06) [35]

160 кил наверное в самый раз будет...


 
panov ©   (2003-11-05 18:17) [36]

>Е-Моё имя © (05.11.03 18:06) [35]
160 кил наверное в самый раз будет...

Не ошибся? я думал о 16Бм-)


 
Е-Моё имя ©   (2003-11-05 18:23) [37]

да нет, не ошибся :))
16 метров-не слишком ли много?
может тогда 160 метров? мне памяти для благого дела не жалко ;)))


 
Е-Моё имя ©   (2003-11-05 18:28) [38]

вообще, в таком случае, какими критериями нужно руководствоваться? как искать золотую середину?


 
panov ©   (2003-11-05 18:33) [39]

Ну, самое простое - отслеживать монитором использование страниц памяти. Не имеет смысла для такой задачи писать свой монитор, поэтому можно спокойно воспользоваться системными средствами...


 
Е-Моё имя ©   (2003-11-05 18:49) [40]

понятно



Страницы: 1 2 вся ветка

Текущий архив: 2003.11.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.016 c
1-89838
mmmaloy
2003-11-16 22:09
2003.11.27
TreeView программно


1-89826
Лана Розанова
2003-11-15 08:02
2003.11.27
Запуск программы с параметрами


14-90080
Sanad
2003-11-05 09:31
2003.11.27
нужно сделать регион из слова, кто знает как


1-89925
qwe
2003-11-18 11:21
2003.11.27
Package


7-90141
LexaVV
2003-09-17 10:02
2003.11.27
MAC адрес, BIOS