Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Создание виртуального диска в ОЗУ


Автор: Rasool 15.6.2016, 16:04
В нашей программе в функции загрузки iges-файлов 3D-модели многократно вызывается внешняя программа с жесткого диска triangle.exe:
Код

ExecuteFile('triangle.exe', '-' + CTriFlags + ' data.node', ExtractFilePath(ParamStr(0)), 0);

Из-за этого программа жутко тормозит при загрузке сложного iges-файла. Самое простое решение: создать дополнительный виртуальный диск в ОЗУ, скопировать туда triangle.exe и создавать файлы data.node там.
Вопрос: как в Delphi создать виртуальный диск в ОЗУ? Может быть, есть какая-то консольная программа Windows, которую можно запустить с помощью процедуры ExecuteFile, которая создает виртуальный диск в ОЗУ?

Автор: Alexeis 15.6.2016, 21:14
Цитата(Rasool @  15.6.2016,  17:04 Найти цитируемый пост)
Может быть, есть какая-то консольная программа Windows, которую можно запустить с помощью процедуры ExecuteFile, которая создает виртуальный диск в ОЗУ?

  За работу дисков отвечают драйвера. Точнее драйвера отвечают за обслуживание любых устройств, в том числе и виртуальных, а диск это устройство. Не слышал, чтобы в винде было что-то подобное. Но есть программы этого класса которые не просят денег. http://www.radeonramdisk.com/software_downloads.php
  В любом случае как бы программа не запускалась ей придется загрузить драйвер. Это действие потребует прав администратора.

Автор: DYUMON 16.6.2016, 05:17
У меня такое материнка поддерживает и к ней идет спец утилита для того что бы монтировать диски из оперативной памяти. тебе как вариант засунуть утилиту на ssd, может поможет.
как вариант тут почитай.
https://support.microsoft.com/ru-ru/kb/257405

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Sozdaniye-virtualnogo-diska-v-OZU-id576152baae2015091d8b4567#findElement_E7045_57620c34ae2015d70c86e9de_0

Автор: Guinness 16.6.2016, 08:42
Цитата(Rasool @  15.6.2016,  17:04 Найти цитируемый пост)
В нашей программе в функции загрузки iges-файлов 3D-модели многократно вызывается внешняя программа с жесткого диска triangle.exe:

Цитата(Rasool @  15.6.2016,  17:04 Найти цитируемый пост)
 Самое простое решение: создать дополнительный виртуальный диск в ОЗУ, скопировать туда triangle.exe и создавать файлы data.node там.

1) Каков размер программы? Если он не шибко большой, то, возможно, основное время тратится не на чтение файла с жесткого диска, а на создание процесса операционной системой. Тогда виртуальный диск не спасёт отца русской демократии.
2) Есть ли какие-нибудь другие интерфейсы взаимодействия с данной программой кроме вызова её через командную строку? (COM, pipe, socket, stdin/stdout и т.п.) Ибо один раз запустить и передавать ей команды на выполнение всяко лучше, чем подтягивать для этого драйвер виртуального диска.
3) К слову, Вы можете один раз считать этот exe файл в память, а далее, если вы конечно знаете что такое PE-формат, вызывать функцию main напрямую. Хотя тут возможны различные подводные камни, о которых я Вам сказать не смогу, ибо так никогда не пробовал делать.

Добавлено через 11 минут и 6 секунд
ИМХО, вообще, раз у вас так часто вызывается данная утилита, то следовательно - это критическая часть вашего приложения. Т.к. она написана не Вами, то это приводит печальным последствиям и придумыванию различных костылей. Для тестового приложения такая схема вполне оправдана, но раз Вы обнаружили, что "бутылочное горлышко" у Вас - это вызов данной утилиты, то было правильно самому реализовать данные вычисления.

Автор: Peter 16.6.2016, 14:36
Отсылаю к книге (наверняка есть в электронном варианте) Андрей Шкрыль Delphi. Народные советы.- СПб.: БХВ-Петербург, 2007. Глава 6, стр. 298-299. Перенес бы весь текст, но нет сканера, а зрение не позволяет набирать те 20 строчек. Однако название раздела звучит – «Вопрос 8. Как создать виртуальный диск и затем, после окончания работы, удалить его?». И снова и снова и какой раз… Наберите в GOOGLE «Как создать виртуальный диск delphi», результат поиска – «Результатов: примерно 27 300 (0,25 сек.)». Ясно, что части результатов не подходят. Но внимательно смотрим (без анализа текста):
http://forum.sources.ru/index.php?showtopic=9545
http://forum.sources.ru/index.php?showtopic=47218
http://forum.sources.ru/index.php?showtopic=95457
http://www.cyberforum.ru/delphi/thread493937.htm
http://www.cyberforum.ru/delphi/thread1763547.ht
Нахожу и данный вопрос http://forum.vingrad.ru/forum/s/c9ed469bffe6d054d757d694860a1971/topic-387852/anchor-entry2660195/0.html
http://forum.vingrad.ru/topic-19166.html
http://www.delphisources.ru/pages/sources/system/2013-year/virtual-disk.htm - программа для создания виртуального диска.
«Исходник программы, показывающей пример использования библиотеки VirtualDisk для создания виртуального зашифрованного диска. Вы можете работать с ним точно также, как с диском C:\ либо папкой Мои Документы: копировать и стирать файлы, перетаскивать их туда мышкой, просматривать диск через проводник Windows Explorer и т.д., при этом вся информация шифруется автоматически "на лету" алгоритмом AES 128 - Автор Зорков Игорь.»
http://ru.vingrad.com:8080/Kak-sozdat-virtualny-disk-cherez-Delphi-v-XP-id50b9f33e6ccc19801404290e
https://rsdn.ru/forum/delphi/411491.all
http://www.delphimaster.net/view/1-1008/all
я не привожу тексты – это излишне. Не знаю, насколько приведенные форумы и статьи реально могут помочь. И это только первая страница из результатов поиска в GOOGLE. Вопрос моментально пробудил воспоминания о выше указанной книге. При разрешении конкретной проблемы обошелся без его применения - писал приложения управления спекл-интерферометрическими установками и сохранение интерферограмм в реальном времени требовало высокого быстродействия. Пробуй, неудачные варианты могут помочь позднее. Главное – опыт. Человек умеет только то, чему научился сам – это и есть жизнь.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Sozdaniye-virtualnogo-diska-v-OZU-id576152baae2015091d8b4567#findElement_E7045_57628f27ae2015272586439d_0

Автор: stanilar 2.7.2016, 14:12
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)