2017-07-14 47 views
2

我正在考慮使用大量的gensyms來區分我正在構建的系統中的對象(如erlang中的ref)。創建大量的gensyms是否合理?

我是否應該在創建大量gensyms後遇到系統限制?

僅供參考,我使用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的宏,它會每個使用0.5-1.5kB。對於每個連續使用相同的參數,其下降到65-150字節左右。

我把它製作了65個字節的gensyms一段時間,並停止它遠高於40億,但我不知道這是否合格,因爲「大」是含糊不清的。

相關問題