hi Miller, Mathieu, Thomas...
how about explicit rehashing requests, to be issued only in well-defined circumstances -- say, via a ``rehash if threshold exceeded'' message to 'pd', and/or, from within canvas_start/stop_dsp()?
It seems to me, that otherwise (without rehashing) there will remain a hidden trap, threatening in particular certain types of applications (e.g. installations), because one cannot avoid producing new symbols, even if in a very slow pace.
Krzysztof
Miller Puckette wrote:
In general, it's a bad idea in Pd to write externs which create indeter- minate numbers of symbols at run time. The original intent was that the only time anyone would call gensym was on text typed by the user. In this situation the existing realization is quite adequate.
But even if you've written C code that generates millions of symbols on the fly as it runs, the (linear-time-worst-case) existing algo is no worse than the (linear-time-worst-case) "smart" algo. In real time it's always the worst case that counts, and the less variation in execution time your objects can have the less likely someone will get a bad surprise someday. So the existing routine, which is _always_ slow, is better than any algorithm that is only _occasionally_ slow.