воскресенье, 19 апреля 2009 г.

Ускоряем octave

Некоторые интерпретаторы держат в памяти таблицу имён всех функций, классов, переменных и т.д. для всех установленных модулей (плагинов). Это приводит к тому, что интерпретатор загружается и обрабатывает скрипты тем дольше, чем больше таких расширений установлено.
Для сравнения: в python нужно явно указывать какие нужны модули (import mudule_name), в php автоматически загружаются все модули, указанные в php.ini.
Octave во всех дистрибутивах, с которыми я имел дело, по умолчанию загружает все установленные модули, но имеется возможность это отключить. Достаточно вызывать octave таким образом:
octave --no-site-file
или даже таким
octave --no-site-file --norc --no-init-file
то есть без всяких настроек модули в таком случае, нужно загружать при помощи команды pkg:
pkg load нужный_модуль
Теперь octave запускается существенно быстрее
Пример файла-скрипта:
#!/usr/bin/env octave --silent --no-site-file --no-history
pkg load audio

Freq = 44*1000; % Частота несущей в герцах
Time = 5; % Продолжительность звучания

t = 0 : 1/Freq : Time;  % Вектор значений времени
w = sin(2000 * sin(t)); % Передаваемый сигнал

y = sin(f*t + w); % Фазовая модуляция сигнала

sound(y, Freq) % воспроизведение

Комментариев нет: