powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как работать с очень большими масивами
25 сообщений из 315, страница 2 из 13
Как работать с очень большими масивами
    #39546055
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01.11.2017 14:20, Андрей Игоревич пишет:
> Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные)
> в пространстве и времени, просто поля в геометрии задаются исходя из особенностей
> конструкции. При том сетка по высоте и времени далеко не плотная.

Андрей, а почему не Fortran?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546064
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревичdefecatorпропущено...


а может быть, стоит задуматься о структурах данных более тщательно
Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) в пространстве и времени, просто поля в геометрии задаются исходя из особенностей конструкции. При том сетка по высоте и времени далеко не плотная.привет, опять пытаешь диск.
Надо задачу определить которую хочешь решить, БД ИМХО не спасёт.

для начала может исходные текстовки в бинарные перевести, что бы диск не терроризировать, заодно структуру и объём узнаешь
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546079
Мимопроходящий01.11.2017 14:20, Андрей Игоревич пишет:
> Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные)
> в пространстве и времени, просто поля в геометрии задаются исходя из особенностей
> конструкции. При том сетка по высоте и времени далеко не плотная.

Андрей, а почему не Fortran?

А почему Фортран? :). А вообще потому что не умею :). И не очень авторитетные источники утверждают, что делфи не сильно то и медленней фортрана (сам не проверял). С высокой долей вероятности эти файлы получены в результате расчетов программах на фортране). Как там с фортраном в части интерфейса?
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546083
kealon(Ruslan)Андрей Игоревичпропущено...

Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) в пространстве и времени, просто поля в геометрии задаются исходя из особенностей конструкции. При том сетка по высоте и времени далеко не плотная.привет, опять пытаешь диск.
Надо задачу определить которую хочешь решить, БД ИМХО не спасёт.

для начала может исходные текстовки в бинарные перевести, что бы диск не терроризировать, заодно структуру и объём узнаешь

Ну структуру и объем я сразу знаю, там все относительно хорошо структурировано (каждый уровень обозначен и подписан понятным способом). А в бинарники я первым делом и планировал загнать, просто хотел сразу всё, но видать не судьба, придется кусками.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546090
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01.11.2017 14:58, Андрей Игоревич пишет:
> Как там с фортраном в части интерфейса?

ты имеешь в виду GUI?
глянь Compaq Visual Fortran и Compaq Array Visualizer.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546128
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализуйте " Разреженный массив "

Данные можно подгружать с диска, а-ля СУБД. Делайте B+ деревья
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546144
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

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

Опять, мы не знаем, для чего человеку это нужно.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546198
Тут принято на каждый вопрос свою тему или можно продолжать в старой?

Просто возникла следующая сложность.
В основной программе где уже много всего текстовые файлы считываются в 10-100 раз медленней, чем в другой программе, ну или просто в чистой, только со считыванием.

Для чистоты эксперимента код в чистой и основной программе упростил до нескольких строк, ничего нигде при работе цикла не подключается. (ну для себя всякие таймеры подключал для удобства, на суть они не виляют).
Основная программа прогоняет исходный текстовый файл в 3 гб (кстати 1-2 гб они только заархивированные были) за дикие 15-30 минут, чистая программа - за 1 минуту 12 секунд в среднем.

Есть и другая программа где я уже обрабатывал куски этих файлов (и ещё не столкнулся с проблемами огромных массивов), там тоже всё шустро работает.

По какой причине, абсолютно один и тот же код выполняется настолько разное время? Где искать проблему? Модули подключил везде одни и те же. Отключение мегамасива не влияет.


procedure TForm1.Button1Click(Sender: TObject);
var tf:TextFile;

FS,PoF,PZ,tmp:integer;
st:string;
begin
OpenDialog1.Execute;
Reset (TF,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
while (not EOF (TF)) do Readln(TF,St);
closefile (TF);
end;
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546206
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичТут принято на каждый вопрос свою тему или можно продолжать в старой?
в новой


чччДArm79,

вряд ли тут разреженные массивы пригодятся, у него непрерывный плотный поток данных во всем диапазоне координат,
если так, то без файлов никуда, нужен кластеризованный индекс типа B+. Собственно - это и есть СУБД.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546214
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревичprocedure TForm1.Button1Click(Sender: TObject);
var tf:TextFile;

FS,PoF,PZ,tmp:integer;
st:string;
begin
OpenDialog1.Execute;
Reset (TF,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
while (not EOF (TF)) do Readln(TF,St);
closefile (TF);
end;Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546216
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
white_niggerАндрей Игоревичprocedure TForm1.Button1Click(Sender: TObject);
var tf:TextFile;

FS,PoF,PZ,tmp:integer;
st:string;
begin
OpenDialog1.Execute;
Reset (TF,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
while (not EOF (TF)) do Readln(TF,St);
closefile (TF);
end;Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile
у него файлы по 10-40 гигабайт
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546219
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

Посмотри на System.SetTextBuf() функцию. С ней я думаю пошустрее будет :)
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546224
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичПо какой причине, абсолютно один и тот же код выполняется настолько разное время? Где искать проблему?
Запускаешь из среды и ту и другую?
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546225
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerАндрей Игоревичprocedure TForm1.Button1Click(Sender: TObject);
var tf:TextFile;

FS,PoF,PZ,tmp:integer;
st:string;
begin
OpenDialog1.Execute;
Reset (TF,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
while (not EOF (TF)) do Readln(TF,St);
closefile (TF);
end;Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile

И мозгов побольше, чтобы эти Strings вместить
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546232
white_niggerАндрей Игоревичprocedure TForm1.Button1Click(Sender: TObject);
var tf:TextFile;

FS,PoF,PZ,tmp:integer;
st:string;
begin
OpenDialog1.Execute;
Reset (TF,OpenDialog1.FileName);
if FileExists(OpenDialog1.FileName) then
while (not EOF (TF)) do Readln(TF,St);
closefile (TF);
end;Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile

Код: pascal
1.
2.
3.
4.
  sl:=TStringList.Create;
  OpenDialog1.Execute;
  sl.LoadFromFile(OpenDialog1.FileName);
  memo1.Lines.Add(inttostr(sl.Count));



для данных 3хгиговых файлов выдает зиро (0), для остальных небольших текстовых файлов - все нормально, подозреваю что стринглист такие файлы не осилит

defecatorwhite_niggerпропущено...
Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile
у него файлы по 10-40 гигабайт

Ну файлы по 2-3 гб, просто их до 20 штук. (Один файл - один год эксплуатации)
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546235
Kazantsev AlexeyАндрей ИгоревичПо какой причине, абсолютно один и тот же код выполняется настолько разное время? Где искать проблему?
Запускаешь из среды и ту и другую?
Да, из одной и той же среды, в обеих случая скорость явно упирается в процессор (1 ядро на максимум занимают), многозадачность пока не уметь. Если успею даже с 10.1 попробую запустить, если она скушает.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546241
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичДа, из одной и той же среды
Под средой я имею ввиду IDE. То есть и "быстрая" программа запускается из-под IDE и "медленная"? Если нет, но вероятно влияние отладчика.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546247
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

Для очень хорошей скорости работы с текстом используй библиотеку CachedTexts
А для произвольных данных - CachedBuffers
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546252
Kazantsev AlexeyАндрей ИгоревичДа, из одной и той же среды
Под средой я имею ввиду IDE. То есть и "быстрая" программа запускается из-под IDE и "медленная"? Если нет, но вероятно влияние отладчика.

Не совсем понимаю, что тут подразумевается под IDE, но запускаю два раза программу с логичным именем Delphi 7 (которая и язык и среда, пароход), в одной компилирую и тестирую одну программу, в другой - другую. Запускаю не одновременно.
Сейчас запустил и скомлировал в Delphi 10.1 (уж не знаю как там теперь называют используемый язык, паскаль, делфе, делфи 7 или делфи 10), считало файл за 1 минуту, и правда - виноват компилятор. Хорошо, что не делал отдельную тему на сей глупый вопрос.

П.С. Удивительно, что в делфи 10 Reset без Assignfile не работает...

П.С. 2 По причине конца рабочего дня и потери доступа к компьютеру с программой отвечать на сообщения по сути до завтрашнего утра более не могу. :) Прошу не серчать.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546264
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

Андрей ИгоревичЗапускаю не одновременно.
Запускаешь как? Просто F9, или может из командной строки/ярлыком? В общем ладно, если запускаешь одинаково и на одних данных, то дело не в отладчике.

Андрей Игоревичи правда - виноват компилятор
Нет, "виноват", скорее всего, менеджер памяти.

Андрей Игоревичуж не знаю как там теперь называют используемый язык
Object Pascal.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546274
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич, интересная задача.
но, если покажете сообществу образцы, примерные форматы, которые грузите,
и расскажите, что хотите с ними делать - возможно советы будут более предметными.

С уважением ........
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546280
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

авторП.С. Удивительно, что в делфи 10 Reset без Assignfile не работает...

Нужно же как-то узнать что (какой именно файл) сбрасывать? :)
Интересно попробовать загрузить в TStringList целый файл сразу. Я не пробовал, не знаю, чем закончится. Скорее всего - ничем хорошим. В 64х, само собой. По хорошему - прикрутить какую-нибудь базу. Пусть бы она и считала. Может даже и без Delphi вообще справится. Результаты только в гуй вывести.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546286
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
75 гиг - не смертельно. На SSD, и данные, и базу - должно довольно шустро влиться, я думаю. Ну а дальше можно делать что угодно и как нужно. Не очень сложно, хотя, если совсем с нуля, то могут быть некоторые сложности. Готовые примеры лучше всего смотреть. Их вагон и тележка в сети.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546319
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ зависимости от пожеланий пользователя (то биш меня) сохранять разные относительно небольшие части этих огромных массивов в другие файлы.
тут скорее всего надо сохранять по мере чтения, тогда память не перегрузится.
причем, если и вход и выход - текстовые, не факт что паскаль из делфи - самый органичный язык для такой обработки.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546324
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и, если читать нужно много раз, для каждого файла данных можно создавать индекс, чтобы позиционироваться быстрее, если нужно не начало. Тогда при повторных чтениях не придется ворочать файл построчно.

И, конечно имеет смысл перегнать в бинарную форму, чтобы при новых чтениях не приходилось разбирать числа снова и снова, да и позиционироваться в бинарных файлах куда как проще, чем в текстовых..... размер блока*количество = мы на месте.

бинарный файл, возможно ужмется в размере, и можно станет использовать механизм
http://xaker.name/threads/25694/
Memory Mapped Files.

Или каждый файл данных разбивать на бинарные так, чтобы влезал. Тогда по моему станет нормально решать поставленные задачи.
...
Рейтинг: 0 / 0
25 сообщений из 315, страница 2 из 13
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как работать с очень большими масивами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]