私はPythonを使用しており、引数の1つとして巨大なリストを取る再帰関数があります:
# Current implementation
def MyFunction(arg1, arg2, my_huge_list)
...
...
MyFunction(new_arg1, new_arg2, my_huge_list)
上記のように、同じlistMyFunction
を使用して再帰的に呼び出されます。他の引数とは異なり、これは変更されません。繰り返しますが、このリストは膨大です。私の友人は、パフォーマンスを改善するためにグローバル変数として扱うことができると提案しました。そうしないと、この膨大なリストが反復ごとに何度もコピーされる可能性があります。my_huge_list
my_huge_list
# Friend's suggestion
MyHugeList=[a,b,c, ...and many many other elements... ]
def MyFunction(arg1, arg2)
global MyHugeList
...
...
MyFunction(new_arg1, new_arg2)
上記のようにグローバル変数を使用すると、元のバージョンよりもアルゴリズムのパフォーマンスが向上しますか? 私のプログラムは数週間実行されるため、長期的にはわずかな改善でも価値がある場合があります。