From: Arno P. <ar...@pu...> - 2011-06-10 14:41:39
|
Yes, we've had this discussion before. Basically creating a Unix-like library (.a) that speeds things compilation time. However, the problem is that (at least) for now it wouldn't work with the C backend. We do optimizations that go beyond the simple decision "should this file be included or not" (what the linker typically does, and which, btw, is also performed by XMLVM at compile-time). We also optimize things like vtables, e.g., if a method never gets overridden, it will not end up in the vtable. This knowledge, however, only exists if we take the application into account. If the application overrides a library method, then the cross-compilation of the library also needs to change. I agree that for a regular development cycle it would make sense to have something like a library and only do full optimizations for the final release. We would need a way to cross-compile without optimizations. One big problem I see here are interface methods (because of the selector coloring scheme that is used), but I better let Markus respond to this since he implemented those optimizations. Arno On Jun 10, 2011, at 6:26 AM, Panayotis Katsaloulis <pan...@pa...> wrote: > > On 10 Ιουν 2011, at 3:11 μ.μ., Sascha Haeberling wrote: > >> Panayotis, >> >> sorry, I didn't understand what you mean. What do you mean by "the library"? The C backend does compute all dependencies so that the number of classes that are compiled and outputted in the end is at a minimum. Only required classes will be pulled in. Why would you want to replace this and with what? >> >> // Sascha > > > This is from an old discussion. > > The idea is to compile the whole JDK and iPhone compatibility library (and probably other dependencies) into a C library (i.e. in a form of .a file) and compile the project against this library. > Thus the Xcode project will compile much much faster and even the production of the Xcode project will be faster (and smaller) since no files from the JDK and the compatibility library will be required any more. > > This idea was also in the earlier days of ObjC backend, but due to the way ObjC handled dependencies and late binding, the gain was far less. > Now with the strong typed C language, things should be much better. > > For example, if a function is not used at all, the C compiler understands that and never embeds it into the output binary - we have optimizations in the method-level, instead of the class-level. > > > I don't know how virtual functions are handled and probably Arno could help with this. > > > PS: I remember that ProGuard is also able to perform this type of optimizations and it is already used for this reason in Android projects. Probably we should also do something similar? > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Xmlvm-developers mailing list > Xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-developers |