Подтвердить что ты не робот

Matlab исполняемый слишком медленный

Я преобразовал мою программу Matlab в приложение на основе консоли, используя deploytool в Matlab. Файл Matlab .m занимает около 2 секунд для выполнения, но после того, как я преобразовал его в исполняемый файл и назвал .exe, для выполнения слишком длинный 45 секунд.

Я хочу интегрировать программу Matlab с PHP. Есть ли другой эффективный и быстрый способ сделать это? В моем проекте время - действительно большой фактор (а не время разработки, но время выполнения приложения). Так есть ли какие-то методы, которые занимают меньше времени?

Я видел в Интернете, что мы можем писать расширения PHP для вызова Matlab. Является ли этот метод быстрым или похожим на вызов файла .exe? Является ли Matlab кодер какой-либо помощью для этого процесса? Если есть альтернативные варианты, укажите это.

4b9b3361

Ответ 1

MATLAB скомпилированный .exe будет страдать от накладных расходов при первом запуске, потому что он запускает MCR: Почему мое приложение, скомпилированное с помощью MATLAB Compiler 4.1, занимает много времени?

Если вы не выходите из системы или не перезагружаете ОС, MCR остается предварительно загруженным. Еще одно полезное: Ускорение запуска скомпилированных приложений.

" Почему мой автономный, созданный с использованием MATLAB-компилятора, занимает больше времени, чтобы начать первый раз?" также сообщает, что последовательные прогоны должны Быстрее, но если вы снова запустите, вам придется перезагрузить процесс в памяти.

Вы можете заключить свой код в tic toc, развернуть его и проверить, сколько времени занимает выполнение, от накладных расходов на запуск.

Альтернативой ускорению .exe будет вызов MATLAB с PHP. Если вы удерживаете сеанс MATLAB, вы запускаете один раз один раз. Вы можете запустить MATLAB при запуске, тем самым избегая страдания от накладных расходов специально во время вызова с помощью PHP.

Для получения дополнительной информации прочитайте Вызов MATLAB из PHP, и имейте в виду, что вы не хотите использовать exit, если это специально не требуется.

Ответ 2

Вызов исполняемого файла, созданного с помощью MATLAB Compiler, будет страдать от накладных расходов относительно вызова программы в реальном времени MATLAB, так как ему нужно запустить MCR. Это будет больше при первом запуске, но все равно будут накладные расходы даже после первого раза.

Если у вас есть доступ не только к MATLAB Compiler, но и к одному из продуктов Builder (Builder для .NET или, что, вероятно, лучше, поскольку вы используете PHP-Builder для Java), есть способ обойти этот.

Используя продукты Builder, вы можете создать автономный компонент (либо сборку .NET, либо Java.jar). Затем вы можете создать приложение .NET или Java, которое будет запускаться, создать экземпляр вашего компонента, созданного MATLAB, который запускает MCR, а затем сидеть и ждать вызова с вашего PHP. Каждый вызов тогда не будет страдать от накладных расходов MCR вообще и должен иметь только меньшие накладные расходы от вызова с PHP на .NET/Java.

Ответ 3

Как говорили другие, когда вы вызываете исполняемые файлы, там, где загружается исполняемый файл, накладные расходы (действительно большие для MATLAB). Решение? Загрузите его только один раз. Как это сделать? Это сложно и зависит от платформ.

Я думаю, что самый портативный способ сделать что-то вроде создания сервера в matlab (я знаю, что это возможно, но я никогда не пробовал). Поэтому, когда вам нужно его использовать, вы просто подключаетесь к нему и отправляете аргументы.

Взгляните на это: HTTP-сервер в Matlab и это: http://blogs.mathworks.com/loren/2011/05/27/transferring-data-between-two-computers-using-matlab/