1. wxEuphoria and wxWidgets 2.9 is slow
- Posted by ghaberek (admin) Jan 15, 2012
- 1308 views
Matt,
I've noticed so far in working with wxEuphoria on wxWidgets 2.9, it loads A LOT slower. Have you experienced this? Any ideas? I even tried building with -O3 instead of -O2 to no avail. Perhaps it's the addition of new libraries like wxScintilla, wxRibbon, and wxPropertyGrid mucking things up?
Also, I'm curious... what's wrong with building wxWidgets in monolithic form on Windows? I know on *NIX it's always distributed as separate libraries, but for quite a while we just had one wxWidgets library and one wxEuphoria library.
Are the two at all related?
-Greg
2. Re: wxEuphoria and wxWidgets 2.9 is slow
- Posted by mattlewis (admin) Jan 15, 2012
- 1288 views
I've noticed so far in working with wxEuphoria on wxWidgets 2.9, it loads A LOT slower. Have you experienced this? Any ideas? I even tried building with -O3 instead of -O2 to no avail. Perhaps it's the addition of new libraries like wxScintilla, wxRibbon, and wxPropertyGrid mucking things up?
I haven't really noticed this, although I haven't been working much (or lately) with wxEuphoria. Which OS are you using?
Also, I'm curious... what's wrong with building wxWidgets in monolithic form on Windows? I know on *NIX it's always distributed as separate libraries, but for quite a while we just had one wxWidgets library and one wxEuphoria library.
Are the two at all related?
I'm not sure what you're asking, as far as "what's wrong." I haven't played around with 2.9 or MinGW much, so I think it's just a matter of configuring and building it correctly. Especially on windows, I haven't gotten much farther than getting it to work at all, and a lot of my (minimal) effort with 2.9 has been focused on getting a viable 64-bit version (not quite there yet).
Of course, there are also the MinGW C++ runtime libraries. With Watcom, we were statically linking the C++ runtime libraries. I'm not sure how feasible that is with MinGW.
Matt
3. Re: wxEuphoria and wxWidgets 2.9 is slow
- Posted by ghaberek (admin) Jan 15, 2012
- 1283 views
I haven't really noticed this, although I haven't been working much (or lately) with wxEuphoria. Which OS are you using?
Windows XP Pro - Pentium M 1.8 GHz single-core
Using wxWidgets 2.9 as separate libraries:
$ time eui wxeud.e real 0m15.156s user 0m0.015s sys 0m0.031s
Strangely enough, using wxWidgets 2.9 as a monolithic library takes a bit longer:
$ time eui wxeud.e real 0m16.015s user 0m0.031s sys 0m0.030s
As you can see, either way it takes a good 15 seconds just to load the entire library. Both of these, as well as the wxEuphoria DLL, were built using -O3. I think I'm going to try turning of a few features and see if it starts loading faster again. I'll bet there's some "new" feature in 2.9 that is slowing things down. I might even turn off 2.8 compatibility altogether.
I'm not sure what you're asking, as far as "what's wrong." I haven't played around with 2.9 or MinGW much, so I think it's just a matter of configuring and building it correctly. Especially on windows, I haven't gotten much farther than getting it to work at all, and a lot of my (minimal) effort with 2.9 has been focused on getting a viable 64-bit version (not quite there yet).
I meant that, I noticed at one point it seems you switched from building just one wxWidgets DLL to many, but I saw no reason to do that. So a better question would be, is one build any better than the other? The entire collection of separate DLLs is about ~30 MB, whereas the monolithic DLL on its own is about 20 MB. It seems wxWidgets got a lot bigger with 2.9, perhaps due to them drawing in previously "external" features.
Of course, there are also the MinGW C++ runtime libraries. With Watcom, we were statically linking the C++ runtime libraries. I'm not sure how feasible that is with MinGW.
It looks like there's just two DLLs it links with: libgcc_s_dw2-1.dll and libstdc++-6.dll. With a monolithic wxWidgets DLL, and the wxEuphoria DLL, we'd still have only four DLL files to ship. I may try cross compiling if I cannot solve the speed issue by paring down the library; perhaps it's a build issue with MinGW.
-Greg
4. Re: wxEuphoria and wxWidgets 2.9 is slow
- Posted by mattlewis (admin) Jan 15, 2012
- 1297 views
I meant that, I noticed at one point it seems you switched from building just one wxWidgets DLL to many, but I saw no reason to do that. So a better question would be, is one build any better than the other? The entire collection of separate DLLs is about ~30 MB, whereas the monolithic DLL on its own is about 20 MB. It seems wxWidgets got a lot bigger with 2.9, perhaps due to them drawing in previously "external" features.
Yes, shipping a single dll was simpler, especially if you wanted to redistribute wxEuphoria with your application. Are you building debug versions? MinGW produces massive binaries when you turn on debugging information.
It looks like there's just two DLLs it links with: libgcc_s_dw2-1.dll and libstdc++-6.dll. With a monolithic wxWidgets DLL, and the wxEuphoria DLL, we'd still have only four DLL files to ship. I may try cross compiling if I cannot solve the speed issue by paring down the library; perhaps it's a build issue with MinGW.
It shouldn't make a difference as far as loading the library, but it will definitely build faster. My understanding is that when you run MinGW / MSys under windows, it has to emulate a lot of POSIX stuff like fork, which makes a lot of things a lot slower. I've found that compiling in a VM running Linux is actually a lot faster than running MSys.
Matt