Okay, many thanks for the explanation. [ Actually,
I've added them back then, but I completely lost
track since :) ]
So, shortly, these are internal macros, and neither
builders nor users have anything to do with them.
I'll remove them from my custom flags.
Brgds,
Viktor
On 2008.05.30., at 12:33, Przemyslaw Czerpak wrote:
On Fri, 30 May 2008, Szakáts Viktor wrote:
Hi Viktor,
BTW, what do you think about HB_STACK_MACROS and HB_API_MACROS,
is it worth to have them? Do they noticably enhance performance?
In practice these macros are important only for core HVM code which
it enables them by default and they should not be used by other code
untill someone does not try to create some custom build only for his
own use.
In RTL and and other libraries they do not give any noticeable
performance improvement.
HVM recompiled without HB_STACK_MACROS and HB_API_MACROS is about
12% slower in PCODE evaluation so for users it may be important.
Please also remember that they will have to be strongly modified
for MT mode (at least HB_STACK_MACROS) so I would like to not touch
it until I will not check the exact MT mode overhead in different
environment. These macros can greatly help me in tests so it's
important for me functionality.
[ If not, we could remove them as well. Or if they do, without
any side-effects, we should make them the default. I personally
use HB_STACK_MACROS here since years w/o problems, but I dunno
about the perf. gain to be honest. ]
They are default in the place where they are give important speed
improvement (HVM). In all other places they are disabled. They
are also automatically undefined in hbvmpub.h if _HB_API_INTERNAL_
is not set so you even if you have them in your build options then
it does not change anything.
If you want to use it then you should include hbvmopt.h before other
header files in your source code. Anyhow I would like to note that
this header is reserved for HVM core code only and should not be used
by 3-rd party code. It should not be even used by non HVM Harbour code
because libraries created with this macro will need separated version
for MT mode. We have one exception to above condition: w32_ole.c which
need it but I hope sooner or later it will be fixed or we will have
alternative OLE implementation.
In summary now these macros are not user build options but only
internal
core code switches so I do not see any problem with them.
best regards,
Przemek
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour