Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
March 26, 2002 empty base class optimization | ||||
---|---|---|---|---|
| ||||
In an article by Nathan Myers (http://www.cantrip.org/emptyopt.html), amongst the compilers that support the empty base class optimization was also Symantec. However, DMC doesn't do that by default, and I didn't find any mention to that in documentation. Is it supported by DMC? While looking in the old help files (after looking in the new HTML docs, of course :), I saw a section about internal limits of DMC: no more than 254 chars in identifiers. Does this apply to *my* identifiers, or to the mangled names that DMC generates? I encountered such issues related to mangled names maximum length in MSVC6, I just couldn't debug a program that had a map<string, map<string, string> >, because of that limit (it linked and executed fine in release mode, though). I hope it's not the case with DMC, is it? Laurentiu |
March 27, 2002 Re: empty base class optimization | ||||
---|---|---|---|---|
| ||||
Posted in reply to Laurentiu Pancescu | "Laurentiu Pancescu" <user@domain.invalid> wrote in message news:a7qkp1$17gg$1@digitaldaemon.com... > In an article by Nathan Myers (http://www.cantrip.org/emptyopt.html), amongst the compilers that support the empty base class optimization was also Symantec. However, DMC doesn't do that by default, and I didn't find any mention to that in documentation. Is it supported by DMC? It isn't done in DMC in order to have the objects binary compatible with Microsoft C. > While looking in the old help files (after looking in the new HTML docs, of > course :), I saw a section about internal limits of DMC: no more than 254 chars in identifiers. Does this apply to *my* identifiers, or to the mangled names that DMC generates? I encountered such issues related to mangled names maximum length in MSVC6, I just couldn't debug a program that > had a map<string, map<string, string> >, because of that limit (it linked and executed fine in release mode, though). I hope it's not the case with DMC, is it? It's around 900 for DMC, and it's after mangling. |
March 27, 2002 Re: empty base class optimization | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On 27 Mar 2002, Walter wrote:
> "Laurentiu Pancescu" <user@domain.invalid> wrote in message news:a7qkp1$17gg$1@digitaldaemon.com...
>> In an article by Nathan Myers (http://www.cantrip.org/emptyopt.html), amongst the compilers that support the empty base class optimization was also Symantec. However, DMC doesn't do that by default, and I didn't find any mention to that in documentation. Is it supported by DMC?
> It isn't done in DMC in order to have the objects binary compatible with Microsoft C.
But at least version 6.0 of Microsoft Visual C++ does implement the empty base class optimization.
bye, Christof
|
March 27, 2002 Re: empty base class optimization | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | "Walter" <walter@digitalmars.com> wrote in message news:a7r6g6$1i05$1@digitaldaemon.com... > > "Laurentiu Pancescu" <user@domain.invalid> wrote in message news:a7qkp1$17gg$1@digitaldaemon.com... > > In an article by Nathan Myers (http://www.cantrip.org/emptyopt.html), amongst the compilers that support the empty base class optimization was also Symantec. However, DMC doesn't do that by default, and I didn't find > > any mention to that in documentation. Is it supported by DMC? > > It isn't done in DMC in order to have the objects binary compatible with Microsoft C. > MSVC6 does this optimization by default, I just checked yesterday - is MSVC6 what you mean by "Microsoft C"? BCC and gcc have this available, but not active by default. It could speed up STL operation (see the article in the original post, someone from Watcom said that it improved STL performance by 30% with their compiler), and reduce memory consumption of EXEs using STL. Would it be hard to do (or to put back, if Symantec C++ had it)? Eventually with a command line switch to activate it? Laurentiu |
March 28, 2002 Re: empty base class optimization | ||||
---|---|---|---|---|
| ||||
Posted in reply to Laurentiu Pancescu | "Laurentiu Pancescu" <user@invalid.domain> wrote in message news:a7s2p4$21gs$1@digitaldaemon.com... > MSVC6 does this optimization by default, I just checked yesterday - is MSVC6 > what you mean by "Microsoft C"? It was an earlier version we tried to be compatible with. BCC and gcc have this available, but not > active by default. It could speed up STL operation (see the article in the > original post, someone from Watcom said that it improved STL performance by > 30% with their compiler), and reduce memory consumption of EXEs using STL. > Would it be hard to do (or to put back, if Symantec C++ had it)? Eventually > with a command line switch to activate it? I find it amusing that this is called an "optimization", because that's what the compiler did originally. It required extra work to "deoptimize" it to be compatible with VC. It's likely it wouldn't be too much trouble to remove that kludge, but I worry about breaking compatibility with some existing library. |
March 29, 2002 Re: empty base class optimization | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | "Christof Meerwald" <cmeerw@web.de> wrote in message news:a7s2fe$2131$1@digitaldaemon.com... > But at least version 6.0 of Microsoft Visual C++ does implement the empty base class optimization. Just checked, you're right, it does. I'll go ahead and implement it for 8.28. |
Copyright © 1999-2021 by the D Language Foundation