free variableへのアクセスのコストの話

Schemeで free variable をたどるときのコストの話。
static link をたどる方法でない2つのパターンについて簡単にまとめた。情報やご意見があればぜひ。


free variableへのアクセスのコスト

追記

gauche.night でもちらっと喋った気がするのだけど、自分は「静的領域に確保する」というのを考えています。といっても、再帰的に変数の実体が増える場合はダメなので、少なくともそこは他の方式に頼ることになります。あと、もし可能ならレジスタに置いてしまうというのもありかなぁと。こういう選択を例えば線型計画問題に落とし込んで、ある程度速い組合せを計算できたら最高ですね(最適なものを求めるのは困難そう)。

反応はやい。
id:scinfaxi さんはネイティブコンパイラで僕のは VM コンパイラなので多少話は違うとは思うのだけどそれは置いておいて考えてみよう。
今の VMコンパイラでも free variable の列挙と参照解決はできているので確かにその方法は可能かも。
いやでもその環境が何回使われるか分からないし、同時に複数個作られるかもしれない。それをまじめに解析するってのはコンパイル時に実行するってのと同じような気がしてきたぞ。
それが「再帰的に変数の実体が増える場合」か。
変数の実体が必ず1つであるという解析結果の場合にのみ静的な領域でというのはありかもしれないが。その解析は可能なんだろうか。再帰してなくて、 leak out してなければ良いのか。
あーいけるかも。