|
|
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
01.11.2017 14:20, Андрей Игоревич пишет: > Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) > в пространстве и времени, просто поля в геометрии задаются исходя из особенностей > конструкции. При том сетка по высоте и времени далеко не плотная. Андрей, а почему не Fortran? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 14:38 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревичdefecatorпропущено... а может быть, стоит задуматься о структурах данных более тщательно Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) в пространстве и времени, просто поля в геометрии задаются исходя из особенностей конструкции. При том сетка по высоте и времени далеко не плотная.привет, опять пытаешь диск. Надо задачу определить которую хочешь решить, БД ИМХО не спасёт. для начала может исходные текстовки в бинарные перевести, что бы диск не терроризировать, заодно структуру и объём узнаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 14:44 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий01.11.2017 14:20, Андрей Игоревич пишет: > Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) > в пространстве и времени, просто поля в геометрии задаются исходя из особенностей > конструкции. При том сетка по высоте и времени далеко не плотная. Андрей, а почему не Fortran? А почему Фортран? :). А вообще потому что не умею :). И не очень авторитетные источники утверждают, что делфи не сильно то и медленней фортрана (сам не проверял). С высокой долей вероятности эти файлы получены в результате расчетов программах на фортране). Как там с фортраном в части интерфейса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 14:58 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Андрей Игоревичпропущено... Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) в пространстве и времени, просто поля в геометрии задаются исходя из особенностей конструкции. При том сетка по высоте и времени далеко не плотная.привет, опять пытаешь диск. Надо задачу определить которую хочешь решить, БД ИМХО не спасёт. для начала может исходные текстовки в бинарные перевести, что бы диск не терроризировать, заодно структуру и объём узнаешь Ну структуру и объем я сразу знаю, там все относительно хорошо структурировано (каждый уровень обозначен и подписан понятным способом). А в бинарники я первым делом и планировал загнать, просто хотел сразу всё, но видать не судьба, придется кусками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 15:01 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
01.11.2017 14:58, Андрей Игоревич пишет: > Как там с фортраном в части интерфейса? ты имеешь в виду GUI? глянь Compaq Visual Fortran и Compaq Array Visualizer. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 15:07 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 15:34 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Arm79, вряд ли тут разреженные массивы пригодятся, у него непрерывный плотный поток данных во всем диапазоне координат, которые заранее неизвестно как использовать. Тут, возможно, типизированные файлы использовать следует. Даже "быстрые" субд типа ключ-значение могут оказаться слишком медленными. Опять, мы не знаем, для чего человеку это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 15:42 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Тут принято на каждый вопрос свою тему или можно продолжать в старой? Просто возникла следующая сложность. В основной программе где уже много всего текстовые файлы считываются в 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:14 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичТут принято на каждый вопрос свою тему или можно продолжать в старой? в новой чччДArm79, вряд ли тут разреженные массивы пригодятся, у него непрерывный плотный поток данных во всем диапазоне координат, если так, то без файлов никуда, нужен кластеризованный индекс типа B+. Собственно - это и есть СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:23 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:33 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
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 гигабайт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:34 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, Посмотри на System.SetTextBuf() функцию. С ней я думаю пошустрее будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:37 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичПо какой причине, абсолютно один и тот же код выполняется настолько разное время? Где искать проблему? Запускаешь из среды и ту и другую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:44 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
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 вместить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:45 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
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. для данных 3хгиговых файлов выдает зиро (0), для остальных небольших текстовых файлов - все нормально, подозреваю что стринглист такие файлы не осилит defecatorwhite_niggerпропущено... Не делай так, если времени жалко. Уж лучше TStrings.LoadFromFile у него файлы по 10-40 гигабайт Ну файлы по 2-3 гб, просто их до 20 штук. (Один файл - один год эксплуатации) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:54 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyАндрей ИгоревичПо какой причине, абсолютно один и тот же код выполняется настолько разное время? Где искать проблему? Запускаешь из среды и ту и другую? Да, из одной и той же среды, в обеих случая скорость явно упирается в процессор (1 ядро на максимум занимают), многозадачность пока не уметь. Если успею даже с 10.1 попробую запустить, если она скушает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:56 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичДа, из одной и той же среды Под средой я имею ввиду IDE. То есть и "быстрая" программа запускается из-под IDE и "медленная"? Если нет, но вероятно влияние отладчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:01 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, Для очень хорошей скорости работы с текстом используй библиотеку CachedTexts А для произвольных данных - CachedBuffers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:08 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyАндрей ИгоревичДа, из одной и той же среды Под средой я имею ввиду IDE. То есть и "быстрая" программа запускается из-под IDE и "медленная"? Если нет, но вероятно влияние отладчика. Не совсем понимаю, что тут подразумевается под IDE, но запускаю два раза программу с логичным именем Delphi 7 (которая и язык и среда, пароход), в одной компилирую и тестирую одну программу, в другой - другую. Запускаю не одновременно. Сейчас запустил и скомлировал в Delphi 10.1 (уж не знаю как там теперь называют используемый язык, паскаль, делфе, делфи 7 или делфи 10), считало файл за 1 минуту, и правда - виноват компилятор. Хорошо, что не делал отдельную тему на сей глупый вопрос. П.С. Удивительно, что в делфи 10 Reset без Assignfile не работает... П.С. 2 По причине конца рабочего дня и потери доступа к компьютеру с программой отвечать на сообщения по сути до завтрашнего утра более не могу. :) Прошу не серчать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:13 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, Андрей ИгоревичЗапускаю не одновременно. Запускаешь как? Просто F9, или может из командной строки/ярлыком? В общем ладно, если запускаешь одинаково и на одних данных, то дело не в отладчике. Андрей Игоревичи правда - виноват компилятор Нет, "виноват", скорее всего, менеджер памяти. Андрей Игоревичуж не знаю как там теперь называют используемый язык Object Pascal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:22 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, интересная задача. но, если покажете сообществу образцы, примерные форматы, которые грузите, и расскажите, что хотите с ними делать - возможно советы будут более предметными. С уважением ........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:35 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, авторП.С. Удивительно, что в делфи 10 Reset без Assignfile не работает... Нужно же как-то узнать что (какой именно файл) сбрасывать? :) Интересно попробовать загрузить в TStringList целый файл сразу. Я не пробовал, не знаю, чем закончится. Скорее всего - ничем хорошим. В 64х, само собой. По хорошему - прикрутить какую-нибудь базу. Пусть бы она и считала. Может даже и без Delphi вообще справится. Результаты только в гуй вывести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:40 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
75 гиг - не смертельно. На SSD, и данные, и базу - должно довольно шустро влиться, я думаю. Ну а дальше можно делать что угодно и как нужно. Не очень сложно, хотя, если совсем с нуля, то могут быть некоторые сложности. Готовые примеры лучше всего смотреть. Их вагон и тележка в сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 17:46 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
авторВ зависимости от пожеланий пользователя (то биш меня) сохранять разные относительно небольшие части этих огромных массивов в другие файлы. тут скорее всего надо сохранять по мере чтения, тогда память не перегрузится. причем, если и вход и выход - текстовые, не факт что паскаль из делфи - самый органичный язык для такой обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:16 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
и, если читать нужно много раз, для каждого файла данных можно создавать индекс, чтобы позиционироваться быстрее, если нужно не начало. Тогда при повторных чтениях не придется ворочать файл построчно. И, конечно имеет смысл перегнать в бинарную форму, чтобы при новых чтениях не приходилось разбирать числа снова и снова, да и позиционироваться в бинарных файлах куда как проще, чем в текстовых..... размер блока*количество = мы на месте. бинарный файл, возможно ужмется в размере, и можно станет использовать механизм http://xaker.name/threads/25694/ Memory Mapped Files. Или каждый файл данных разбивать на бинарные так, чтобы влезал. Тогда по моему станет нормально решать поставленные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39546232&tid=2041256]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 564ms |

| 0 / 0 |
