Florian Klaempfl schrieb:
Am 06.09.2010 14:30, schrieb Michael Schnell:
What's the problem with using threadvars
As discussed some days ago, the current implementation of Threadvars is
quite slow (doing a libc call on each access to a threadvar).

And? Those variables aren't used very often. And if needed, it can be
improved later.

Threadvars *are* used frequently, as long as almost all currently global variables have to become threadvars. When I moved the global scanner variables (c, token...) into the scanner object, every access to such a moved variable requirs access to the thread-local scanner object first.

When objects are used as containers for thread-local variables, these object references (to the thread-local objects) should be cached. This will have to be done inside every procedure, that makes use of a reasonable number of threadvars. E.g. current_scanner or current_module can be copied into local (stack) variables, for further use inside that procedure. That's at least better than having a huge number of references to individual threadvars.

I hope that it has become more clear now, why I want to remove as many global variables as possible.

DoDi

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to