Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Е-Моё имя   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.009 c
14-90078
Думкин
2003-11-05 05:14
2003.11.27
С днем рождения! 5 ноября.


3-89732
Мыш
2003-11-09 18:16
2003.11.27
Выбрать данные из нескольких таблиц. SQL.


1-89845
WCM
2003-11-16 18:51
2003.11.27
Создание объектов


1-89839
TIER
2003-11-16 22:54
2003.11.27
<I>Как сделать чтобы работало несколько циклов одновременно?</I>


1-89843
dred
2003-11-16 01:46
2003.11.27
Работа со структурой данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский