[Issue 13193] Extreme slowdown in compilation time of OpenSSL in Tango for optimized build

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jul 26 14:27:50 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=13193

Nils <nilsbossung at googlemail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nilsbossung at googlemail.com

--- Comment #3 from Nils <nilsbossung at googlemail.com> ---
(In reply to Walter Bright from comment #1)
> Any chance of a reduced test case?

Here you go.

2.065 finishes in less than 0.1 seconds on my system.
2.066.0-b5 takes over 7 seconds.
When the code is all in one module, 2.065 is just as slow.

---
cat > SharedLib.d << code
module SharedLib;
final class SharedLib {
    void getSymbol() {return getSymbolImpl();}
    void getSymbolImpl() {return getSymbol_();}
    /* add more intermediate functions to go slower */
    void getSymbol_() {}
}
code

cat > OpenSSL.d << code
module OpenSSL;
import SharedLib;
SharedLib ssllib;
void bindFunc() {ssllib.getSymbol();}
void bindCrypto()
{
    bindFunc(); /* add more of these to go slower */
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 10 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 20 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 30 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 40 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 50 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 60 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 70 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 80 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 90 */

    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc();
    bindFunc(); /* 100 */
}
code
time dmd -c -inline -O OpenSSL.d
---

--


More information about the Digitalmars-d-bugs mailing list