#!/bin/zsh emulate -LR zsh --reload-and-run () { local fpath_prefix="$1" autoload_opts="$2" func="$3" shift 3 unfunction "$func" local FPATH="$fpath_prefix":"${FPATH}" builtin autoload $=autoload_opts "$func" "$func" "$@" } fbody1='#!/bin/zsh str="" str=${(r:100000::_:)str}; arr=( "${(@s::)str}" ) repeat 10; do aload_fun done #print -rl "${arr2[@]}" ' fbody2='#!/bin/zsh str="" str=${(r:100000::_:)str}; arr=( "${(@s::)str}" ) repeat 10; do arr2=( "${(@M)arr:#(#a1)_}" ) done #print -rl "${arr2[@]}" ' echo "$fbody1" > aload_fun_main echo "$fbody2" > aload_fun # Normal autoload FPATH+=:`pwd` autoload aload_fun_main autoload aload_fun echo "Normal autoload:" time ( aload_fun_main ) unfunction aload_fun_main unfunction aload_fun # Special autoload eval " function aload_fun_main { local FPATH=$FPATH:`pwd` autoload -X } " eval " function aload_fun { local FPATH=$FPATH:`pwd` autoload -X } " echo "Special autoload:" time ( aload_fun_main ) unfunction aload_fun_main unfunction aload_fun # More special autoload PLUGIN_DIR=`pwd` eval " function aload_fun_main { --reload-and-run ${(q)PLUGIN_DIR} '' aload_fun_main } " eval " function aload_fun { --reload-and-run ${(q)PLUGIN_DIR} '' aload_fun } " echo "More special autoload:" time ( aload_fun_main ) unfunction aload_fun_main unfunction aload_fun