Very good! IceE is released, I have been waitting for it for a long time. Let me try it.
|
|
Very good! IceE is released, I have been waitting for it for a long time. Let me try it.
Successfully made it run in my board. My board is the ARM920T CPU board running WinCE.net 4.2.
Great! I'm glad to hear that you were able to get it to work so easily and quickly.
Yes, because you provided the full document to help us how to use it. thank you very much!
The IceE image
I compiled IceE with arm-linux-gcc 3.3.2, but the library is too large to fit in an embedded system.
lrwxrwxrwx 1 zzq01 zzq01 14 Aug 30 15:07 libIceEC.so -> libIceEC.so.10
lrwxrwxrwx 1 zzq01 zzq01 17 Aug 30 15:07 libIceEC.so.10 -> libIceEC.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 5827350 Aug 30 15:07 libIceEC.so.1.0.0
lrwxrwxrwx 1 zzq01 zzq01 13 Aug 30 15:06 libIceE.so -> libIceE.so.10
lrwxrwxrwx 1 zzq01 zzq01 16 Aug 30 15:06 libIceE.so.10 -> libIceE.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 6230350 Aug 30 15:06 libIceE.so.1.0.0
lrwxrwxrwx 1 zzq01 zzq01 19 Aug 30 15:07 libTestCommon.so -> libTestCommon.so.10
lrwxrwxrwx 1 zzq01 zzq01 22 Aug 30 15:07 libTestCommon.so.10 -> libTestCommon.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 4648198 Aug 30 15:07 libTestCommon.so.1.0.0
May be this is debug version? Under gcc (GCC) 3.3.6 (Debian 1:3.3.6-7) with OPTIMIZED=yes in config/Make.rules
But another question:Code:1001305 2005-08-30 13:46 libIceEC.so.1.0.0 1266668 2005-08-30 13:45 libIceE.so.1.0.0
Which client will have such footprint? Any demo and tests are not less then 500k with strip -s? F.e. demo/helloAs a result, statically-linked client and server executables can be as small as 150KB and 190KB in size, respectively.
Code:591596 2005-08-30 14:01 client 766896 2005-08-30 14:01 server
Hi,
The 150K and 190K values for the minimal size of the client and server were obtained on Windows using VC++ 7.1 (ie .NET 2003). The sizes on other platforms with other compilers will vary.
Here are the sizes that I obtained with various compilers building the minimal demo (demo/IceE/minimal). These are all optimized static library builds (for windows choose the "Release Static" build, for linux edit Make.rules and enable OPTIMIZE and STATICLIBS).
Also all of the optional IceE code suppport (router, locator, batch) has been disabled by editting include/IceE/Config.h and commenting out the config lines as shown.
Windows /w VC 7.1Code:// // Comment this out if you want to build without Router support. // //#define ICEE_HAS_ROUTER // // Comment this out if you want to build without Locator support. // //#define ICEE_HAS_LOCATOR // // Comment this out if you want to build without batch mode on the // client side. // //#define ICEE_HAS_BATCH
Windows /w VC 6.0Code:-rwxr-xr-x 1 dwayne None 156672 Aug 30 10:06 client.exe* -rwxr-xr-x 1 dwayne None 193024 Aug 30 10:06 server.exe*
Windows CE /w EVC++ 4.0 (ARM)Code:-rwxr-xr-x 1 dwayne None 180736 Aug 30 10:09 client.exe* -rwxr-xr-x 1 dwayne None 218624 Aug 30 10:09 server.exe*
Linux /w GCC 3.4.4Code:-rwxr-xr-x 1 dwayne None 302080 Aug 30 10:12 minimalClient.exe -rwxr-xr-x 1 dwayne None 367104 Aug 30 10:13 minimalServer.exe
Linux /w GCC 4.0.1Code:-rwxrwxr-x 1 dwayne dwayne 470744 Aug 30 10:07 client* -rwxrwxr-x 1 dwayne dwayne 646636 Aug 30 10:07 server*
As you can see from the sizes, GCC is the poorest at producing compact code.Code:-rwxrwxr-x 1 dwayne dwayne 437572 Aug 30 10:29 client* -rwxrwxr-x 1 dwayne dwayne 595740 Aug 30 10:29 server*
Of course we will continue to work towards making IceE smaller in future releases.
Regards,
Dwayne
Hmm... it's really confusing.![]()
Seems to be that gcc wants -Os instead of -O3 (BTW O3 is not recommended, O2 is better).
This is for -O2
This is for -OsCode:435592 2005-08-30 18:35 client
.text segment is around 250kCode:377000 2005-08-30 19:09 client
But still far from 156672. BTW if client compiled totally static non ELF binary (-static) here it is:
Still thinking that rtti and name mangling is a trouble here (don't know how it in VC7, but here was dragons in VC6 with exported classes and mangled names, but this allow to more compact mangled names).Code:-rwxrwxr-x 1 dusr3 dusr3 1011088 2005-08-30 18:54 client
PS: little gcc warnings if no Batchmode enable. May be they must be ifdefed?:
Code:../../src/IceE/Outgoing.cpp: In constructor ` IceInternal::Outgoing::Outgoing(Ice::Connection*, IceInternal::Reference*, const std::string&, Ice::OperationMode, const Ice::Context&)': ../../src/IceE/Outgoing.cpp:67: warning: enumeration value `ModeBatchOneway' not handled in switch ../../src/IceE/Outgoing.cpp: In constructor ` IceInternal::Outgoing::Outgoing(Ice::Connection*, IceInternal::Reference*, const std::string&, Ice::OperationMode, const Ice::Context&)': ../../src/IceE/Outgoing.cpp:67: warning: enumeration value `ModeBatchOneway' not handled in switch ../../src/IceE/Outgoing.cpp: In member function `bool IceInternal::Outgoing::invoke()': ../../src/IceE/Outgoing.cpp:258: warning: enumeration value `ModeBatchOneway' not handled in switch
Hi,
Some updated size numbers...
First using -Os on linux with gcc 4.0.1 I now get
We will change -Os to be the default optimization. (For those listening in, you can easily change this by replacing instances of -O3 with -Os in config/Make.rules.Linux)Code:-rwxrwxr-x 1 dwayne dwayne 327852 Aug 30 13:20 client* -rwxrwxr-x 1 dwayne dwayne 431004 Aug 30 13:20 server*
Also, I noticed that "Optimise Size" was not being set properly for the WindowsCE EVC++ build. New, slightly smaller, sizes for CE are
Btw, why do you say -O3 is not recommended and -O2 is better? Better in what way?Code:-rwxr-xr-x 1 dwayne None 296960 Aug 30 13:28 minimalClient.exe -rwxr-xr-x 1 dwayne None 357888 Aug 30 13:30 minimalServer.exe
Regards,
Dwayne
PS: Thanks for the note regarding the gcc warnings. These will be fixed in the next release.
In any case this is a good work. Now Ice can live on typical embedded hardware such as DLink routers with linux onboard.
Better = stable. O2 sometimes faster then O3. But in most case smaller then O3.Originally Posted by dwayne
http://freshmeat.net/articles/view/730/
And really this is conservative opinion... most linux systems (except Gentoo) compiled on -O2.
Most unpleased effect, IMO in:
"heuristically" => some times unpredictable-finline-functions
Integrate all simple functions into their callers. The compiler
heuristically decides which functions are simple enough to be worth
integrating in this way.
If all calls to a given function are integrated, and the function
is declared "static", then the function is normally not output as
assembler code in its own right.
Enabled at level -O3..
Last edited by aka50; 08-30-2005 at 03:01 PM.
One more question. Are there any plans for Python mappings for IceE. (or it is not too difficult to port IcePy to IcePyE)?
Here is my board that running IceE on WinCE.
Here is my board that running IceE on WinCE
We have no plans at present to port IcePy to Ice-E. This would require a significant effort, since IcePy uses features of Ice that are not supported by Ice-E. Furthermore, the commercial need for an IcePy-E is very questionable, since Python does not appear to be commonly used in embedded applications.Originally Posted by aka50
Take care,
- Mark
It's true. But IceE is small and simple. This allow to make compact IcePy subset with small footprint. But this is not a question with commercial or other target. Only a questionOriginally Posted by mes
.
There are currently 1 users browsing this thread. (0 members and 1 guests)