OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 23 Октябрь, 2017 01:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 20 Март, 2017 14:58 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 477
Откуда: Киев
Цитата:
Еще прошу поделиться опытом, как быть с динамическими объектами. Скажем, если мне надо создать массив под данные из файла.
NEW нельзя получается, массивы объявить тоже только по константе возможно.
Только статические типы получается? То есть заранее делать огномный буфер под предполагаемый размер?
Или есть какие-то варианты?

Цитата:
По подводу "как с этим жить" тебе Info21 расскажет на oberoncore

Если коротко, то загружать целиком файл в цельный массив можно только в том случае, если его размер ограничен небольшим числом согласно задаче. В таком случае можно взять статический массив. В ином случае, нужно использовать что-то иное вне зависимости от того, есть в языке динамические массивы или нет. Как выглядит "гениальное" решение загружать весь файл в цельный массив можете лицезреть в большинстве редакторов при попытке открыть большой файл.

Универсального решения нет и всё зависит от задачи. Иногда достаточно окна - небольшого буфера, в который загружется нужный кусок, иногда - связный список таких окон для последовательного доступа. Если нужен моментальный произвольный доступ, то из таких окон строится "расстановка", он же hash array. Если нужна бОльшая гибкость - то дерево.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Март, 2017 05:58 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1922
Откуда: Красноярск
Спасибо за советы, думаю, что они пригодятся.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Март, 2017 14:23 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8823
Откуда: Россия, Орёл
Реализуйте Files.File над памятью!
Или возьмите готовый!
Тут viewtopic.php?f=23&t=4214


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Март, 2017 15:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 477
Откуда: Киев
Иван Денисов писал(а):
Спасибо за советы, думаю, что они пригодятся.

Когда я их писал, я ещё не смотрел на WEB API для считывания содержимого файла, что важно для Вашей задачи. Выяснилось, что в нём не предусмотрено порционное чтение, а только всего файла целиком в динамический массив. Это делает мои советы бессмысленными для WEB.
Тем не менее, с файлом всё равно удобней работать не меся байты напрямую, а используя абстракцию файла.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Апрель, 2017 10:44 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1043
Откуда: СССР v2.0 rc 1
Почему бы не создать пакет для работы с файлами, как они на диск отображаются? Блоками!))
А блоки связывать в один список. Разумно было бы размер блока сделать в несколько килобайт, чтобы снизить накладные расходы.
Получится "квази-динамический массив" пригодный для практического применения)))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Апрель, 2017 13:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8823
Откуда: Россия, Орёл
Ну так реализации Files.File в памяти так и устроены.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Апрель, 2017 16:23 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1043
Откуда: СССР v2.0 rc 1
Либо я ещё из ума не выжил, либо в психушке сидят только те, кого спалили))

Идея, имхо, просто просится в реализацию именно таким способом))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 09:20 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 586
Откуда: Казань
Да, только файлы бывают и по 5 Гб и больше, а память адресовать можно только 2 Гб. Files.File может работать с такими большими файлами?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 09:59 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1043
Откуда: СССР v2.0 rc 1
Rifat писал(а):
Да, только файлы бывают и по 5 Гб и больше, а память адресовать можно только 2 Гб. Files.File может работать с такими большими файлами?

Ээээ.... чтение блоками/порциями никто не отменял. Да и, в обычных системах (не встроенке) априори считается, что дисковой памяти заведомо больше, чем оперативной по понятным экономическим соображениям.
А при правильно построенной абстракции -- оперативная память отображается на дисковую, либо через прямое отображение (и это, имхо, наиболее правильный вариант), либо как отдельная область линейной памяти за концом дисковой памяти (но опять же, программист об этом знать не должен, поэтому это менее правильный вариант абстракции по моему разумению).

Здесь нельзя путать понятия "аппаратная адресация" и "логическая адресация". Если абстракция не течёт -- то о таких мелочах программист не будет думать от слова "вообще". Хотя, если программист захочет САМ, то конечно, он может при таком желании покопаться в кишках этого механизма. Но ни один грамотный специалист в добром здравии не захочет этого делать.

Тип LONGINTEGER -- 8 байт 2^64=18446744073709551616 (18 * 1024^6)(16 эксабайт или 8 эксабайт в обе стороны при индексном позиционировании от центра) , NTFS позволяет файлы 8 эксабайт, Ext4 -- 16 терабайт. Так что, гигабайты уже кажутся смешными и проблема вычислительной мощности опять упирается в проблему ввода/вывода)) Компонентный Паскаль со всеми проверками и огребаниями памяти от мусора всё-равно будет быстрее чем дисковый ввод вывод))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 11:27 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 477
Откуда: Киев
Rifat писал(а):
Да, только файлы бывают и по 5 Гб и больше, а память адресовать можно только 2 Гб. Files.File может работать с такими большими файлами?
Изначальное желание Ивана было загружать файл в память целиком. Для таких методов работы в общем случае возникает множество проблем, в том числе указанная Вами. Для Оберон-07 скорее всего нет готовой реализации Files.File, но при создании такой нужно заложить возможность работы с большими файлами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 13:35 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1922
Откуда: Красноярск
Rifat писал(а):
Да, только файлы бывают и по 5 Гб и больше, а память адресовать можно только 2 Гб. Files.File может работать с такими большими файлами?

Если говорить про Блэкбокс, то это возможно после небольшой модификации ББ.
Демонстрационная версия лежит в отдельной ветке в Центре
http://blackboxframework.org/unstable/master64


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 13:41 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1922
Откуда: Красноярск
Тема посвящена вот такой задачке:
https://models.molpit.org/model/71
Работа с аудиофайлом в JavaScript.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 17:43 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
Иван Денисов писал(а):
Тема посвящена вот такой задачке:
https://models.molpit.org/model/71
Работа с аудиофайлом в JavaScript.

АЧХ звукового файла?
Спектр сигнала может быть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 04 Апрель, 2017 18:06 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1922
Откуда: Красноярск
Artyemov писал(а):
Иван Денисов писал(а):
Тема посвящена вот такой задачке:
https://models.molpit.org/model/71
Работа с аудиофайлом в JavaScript.

АЧХ звукового файла?
Спектр сигнала может быть?

Ну да, фурье спектр сигнала, но почему-то в Интернете часто это называют АЧХ, хотя АЧХ скорее для аудиколонок и наушников применяется. Пожалуй я стал жертвой собственного заблуждения, так что исправлю сейчас. Спасибо за замечание :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB