2017-07-14 4 views
2

多くのgensymを使って、私が構築しているシステムのオブジェクトを区別することを検討しています(erlangのように)。多数のgensymを作成することは合理的ですか?

多数のgensymを作成した後にシステム制限に遭遇するはずですか?

参考までに、私はSBCLを使用しています。

+3

何が大きな数字ですか? –

+0

何か大胆なことをしたいですか? '(loop(prin1(gensym)))'を試してください。私を責めないでください。結局、この実験はgensymの数に制限がないことを示唆していたようです。さらに、 '' gensym''(http://clhs.lisp.se/Body/f_gensym.htm)の 'G'を、パラメータとして別のシンボルを与えることで、いつでも置き換えることができます。 – Mooncrater

+1

@Mooncrater 'gensym'は文字列または正の整数をとります。いくつかの実装ではシンボルで動作するかもしれませんが、移植性がありません。 – Sylwester

答えて

2

異なる実装では、異なる量のメモリが使用されます。 gensymで使用されているバイト数をテストするだけで、それを渡す引数と以前のラウンドのユニークな方法に依存します。

固定数の文字列を常にgensymに渡すマクロがある場合、 1人につき0,5-1,5kBを使用します。同じ引数を使って連続するたびに65-150バイト程度です。

私はしばらくの間、65バイトのgensymを作って、それを4桁以上上手く止めましたが、 "大"があいまいなので、それが適格かどうかはわかりません。

関連する問題