LINUX.ORG.RU

Сильно ли теряется производительность и повышается потребление системных ресурсов (таких как память) программы на скриптовом языке при переходе от монолита к модулям


0

0

Есть некоторый скриптовый файл, в котором размещено много процедур и они вызываются только из этого файла. Требуется отделить процедуры от файла. Допустим, в одном случае получилась некая либа, которая подключается к головной программе, а в другом - целая серия файлов, каждый из которых хранит одну процедуру и при необходимости процедуры происходит простой вызов файла процедуры из головной программы.

1. Насколько будут изменяться потребление системных ресурсов при переходе от цельной программе к первому варианту дробной? При переходе от первой дробной ко второй? Язык Tcl.

2. Есть ли разница по поводу подобных переносах в других скриптовых языках (Perl, Python) и C/C++ ?

В частности, интересно быстрота вызова интерпретатора в Tcl, а также возможно иные технологии в других языках для решения подобных задач.

anonymous

Вот это называется Спросил! С большой буквы С :)

ИМХО зависит от системы в целом, а не только от интерпретатора и иже с ним. Проще замерить время запуска и работы - а ля отпрофилировать и вопросов не будет :)

KIV
()

по поводу расхода памяти - практически ничего не меняется, по поводу производительности - то-же самое :)

делайте так, чтобы было проще поддерживать программу - вот Сотлман в своё время обломался, потом писал на всех заборах что tcl отстой :)

правильное решение (imho) разделить проект на библиотеки и бизнес-логику которая их дергает. Пихать кажую процедуру в отдельный файл, не самое лёгкое решение - его потом сложно поддерживать.

вопрос по поводу скорости вызова интрепретатора - вообще непонятен, что имеется в виду ?

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

>вопрос по поводу скорости вызова интрепретатора - вообще непонятен, что имеется в виду ?

Если процедура вызывается из монолита, то она, как я понимаю, интерпретируется текущим интерпретатором. А если из отдельного файла - другим. Я не знаю, как вызывается копия интерпретатора и как замерить ее вызов, отсюда и вопрос о трёх методиках.

>Пихать кажую процедуру в отдельный файл, не самое лёгкое решение - его потом сложно поддерживать.

Будет программа, работающая по такому типу: есть джанные и в зависимости от результатов их анализа вызывается та или иная процедура. Разве не легче будет в этом случае сделать список файлов с процедурой в каждом?

anonymous
()
Ответ на: комментарий от anonymous

> Если процедура вызывается из монолита, то она, как я понимаю, интерпретируется текущим интерпретатором.

Ты не понимаешь, в смысле, понимаешь неправильно. Единственный "скриптовый язык", который работает подобным образом - это шелл ;)

На питоне и перле разницы в производительности между (одним скриптом) и (скриптом с кучей модулей) никакой (ну, затраты на open N раз можно не учитывать). На тыцыле - не знаю, но не думаю, что что-то отличается.

Опять жешь, если тебе нужен dispatch table, то и в питоне, и в перле, и в тыцыле функции - first class objects, и их можно смело хранить в (ассоциативных) массивах. Т.е. вместо

if (data_type == smth ) process_smth(data)

else if (data_type == smth_else ) process_smth_else(data)

можно написать

lookup_table[data_type](data)

anonymous
()
Ответ на: комментарий от anonymous

если есть возможность разбить на части,
незадумываясь делай это - все потом окупиться.

В программировании действует "анти-2ой-закон термодинамики" -
"собрать кучу легче, чем разобрать".

Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.