require
само по себе имеет относительно низкую стоимость в любом случае, и если вы require
один и тот же файл более одного раза за один прогон вашей программы, он обнаружит, что файл уже был загружен и не будет пытатьсязагрузить его во второй раз.Однако, если у вас длинный и высоконаселенный путь поиска (@INC
) и у вас require
(или use
) много файлов, вполне возможно, что все операции поиска в каталогах могут сложиться;это не распространено (и в вашем случае это не звучит правдоподобно), но его можно улучшить, реорганизовав каталоги модулей так, чтобы вещи, которые вы загружаете, появлялись раньше в @INC
.
.Потенциально значительный удар по производительности, о котором говорилось в предыдущих ответах, - это стоимость компиляции кода в файлах, которые вы require
.Избавление от require
путем перемещения кода в основную программу не поможет в этом, так как код все равно нужно будет скомпилировать.В вашем случае это, вероятно, ухудшит ситуацию, поскольку приведет к тому, что код для всех опций будет скомпилирован для каждого, а не только для компиляции кода, используемого одним действием, выбранным пользователем.