Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Elegant Ribbon Tech Support » About the Cold Startup Time Collapse All
Subject Author Date
Imgen Wakin Jan 24, 2010 - 6:51 AM

When I use Elegant Ribbon v3.4 with my app, if in cold startup after system rebot, it takes about 20~30s to get started. I use procmon.exe from Systeminternals suite and it shows that the system is reading Elegant Ribbon assemblies many many times. I don’t know why? I installed Elegant Ribbon assemblies to GAC and it should be fast. The assemblies I’m using are:


Elegant.Ui.Common.dll


Elegant.Ui.Common.Theme.Office2010TP.dll


Elegant.Ui.Ribbon.dll


Elegant.Ui.Ribbon.Theme.Office2010TP.dll


I see that all these assemblies are ngened. And my app and its referenced assemblies are not. Is that supposed to mean anything?

Imgen Wakin Feb 2, 2010 - 7:34 PM

Thank you very much. But I see that the assemblies is still obfuscated. That makes it impossible for me to integrate it into my application using ILMerge. Could you remove obfuscation so that I can merge them for even greater performance? I know that at least Elegant Ribbon v3.1 is not obfuscated. I know that this may lead to source code leak, but I don’t have the interest or energy to do so

Sublight Developer Feb 1, 2010 - 2:14 PM

Themes should stay separated in their own assemblies because there are many themes (and most developers use only one).



In my opinion, if you would like to merge assemblies into single .dll you should purchase Elegant Ribbon source code and modify it by yourself.



I also tested cold startup on my own machine and it is fast enough (under 5 seconds with precompiled assemblies).



Conclusion: I wouldn’t change anything (except removing System.Web reference if it is really not needed).

Imgen Wakin Feb 1, 2010 - 8:19 PM

Themes should stay separated in their own assemblies because there are many themes (and most developers use only one).


     I also only use one. Point taken. But what I’m asking is to make exception. If you don’t, that’s fine.


In my opinion, if you would like to merge assemblies into single .dll you should purchase Elegant Ribbon source code and modify it by yourself.


    Is that so hard? I mean, you use ILMerge to merge two assemblies? Sure it would kill a lot of your coffee time. If you find ILMerge is too hard, there is a GUI tool for it. Check out http://ilmerger.codeplex.com/. I think it would not take much time to learn how to use it. But if you don’t want to do so, please remove obfuscation, I’ll do it myself. I don’t feed very comfortable that you took this chance to convince me to buy source code.


    I also tested cold startup on my own machine and it is fast enough (under 5 seconds with precompiled assemblies).


    You are suggesting that I made up the situation. Your sample apps also take more than 20s to do a cold startup. Are you sure before you run your sample app, no other .net app has been started - that’s the key here. If another .net app already started, the cold startup time is skewed. On my machine, my app will also start around 5s. So not really a cold startup. Are you also precompiled your sample app? I removed precompiled assemblies so that the result is not skewed. I think I made it clear that with precompiled assemblies, the situation got worse. Cause my app isn’t precompiled, so it’s a mix of IL assemblies and precompiled assemblies and so that the result is terrible( cold startup is more than 30s ).

Sublight Developer Feb 1, 2010 - 10:46 PM

First I would like to make one thing clear. I am 3rd party developer using Elegat Ribbon component. My previous post is just my personal opinion :)



I am not suggesting you are making up your situation. I am just telling fact that it works fine on my machine. And that cold startup test I took... It was not test of sample application, it was test of my own application (which are using 50,000+ users).



If you like, you can download my application and test how long it takes on your machine (download is available on http://www.sublight.si )







Regards,

macofaco

Imgen Wakin Feb 2, 2010 - 1:22 AM

I downloaded your app called Sublight (BTW, it’s good in terms of UI design and other things). Ironically, it takes 30+s to do a cold startup. So much for the under-5s cold startup performance, huh? It takes about 28-29s for the splash window to even show up.  Check out my machine configuration and my test condition. On the other hand, although, my app is much larger ( about 9MB setup file size, a lot more assemblies cause I looked at your about dialog, also a lot more feautres [ it has 14 tabs ]) still on the cold startup, my app takes less than 1s for the splash window to show up, about 20s to show the main window. And my app don’t use ngen at all. If you don’t/can’t believe, I’ll send you a express version of my app ( it’s the free version, not released yet but soon ). And furthermore, it only requires .net framework 2.0.

Imgen Wakin Jan 29, 2010 - 9:41 PM

Please keep in mind that I’m talking about cold startup time - which means after system reboot and before any other .net apps run. Literally mean that the .net framework has to be loaded (like JIT, etc). The warm startup performance is acceptable though. Actually sometimes it’s very good.

Imgen Wakin Jan 25, 2010 - 8:44 PM

My main application is 840k, so if you are rebasing Elegant.Ui assemblies, you only need to offset about 1024*1024 bytes

Imgen Wakin Jan 25, 2010 - 8:25 PM

BTW, my machine’s configuration is as below:


Intel Core 2 Duo T7500 2.20 GHZ


2G RAM


Win7 RC1 English 32Bit


120G Hard disk


System disk has about 30G free space. So it rules out performance issue of my machine. When I starts Windows Live Mail, which is also written in .NET, it only takes 10s at most to do a cold startup. So I believe it must be something wrong.

Technical Support Jan 25, 2010 - 9:57 AM

Could you let us know if the problem happens with our sample applications? You can also try removing the ngened assemblies from GAC and using Elegant Ribbon’s plain assemblies which you can find in the product’s folder. In any case, we are eager to help you resolve what you have encountered.

Imgen Wakin Jan 25, 2010 - 8:20 PM

I tried ILMerge those 4 assemblies. It compiles fine, but it won’t start. It throws exception when Initialize Elegant.Ui.Ribbon types like RibbonGroup. It should be the side affect of obfuscation I guess.

Technical Support Jan 26, 2010 - 1:31 PM

Thank you for reporting the issue. The assemblies are indeed obfuscated so we will look into how to help you resolve this issue in the most efficient way.

Imgen Wakin Jan 25, 2010 - 8:07 PM

It also happens with your sample applications. It takes a long time to startup after the system reboot - cold startup. I already took your advice and GACed only the assemblies I use. But it still take about 20s to do a cold startup. The warm startup performance is quite good though. Can you please merge Elegant.Ui.Common.dll/Elegant.Ui.Common.Theme.Office2010TP.dll/Elegant.Ui.Ribbon/Elegant.Ui.Ribbon.Theme.Office2010TP.dll using ILMerge or whatever and rebase the base memory address of the generated assembly so that it won’t be rebased at loading. When startup, my app mainly loads these 4 assemblies and when I used Procmon.exe, I saw that the assemblies referenced to System.Web which takes a long time  at cold startup. I know it’s probably because the license issue, but please remove the System.Web reference. For the recored, I already brought the license.

Technical Support Jan 29, 2010 - 9:30 AM

We will remove the System.Web reference. But frankly speaking we did not manage to reach the same slow start even on slower machines (Windows 7 32 and 64). We noticed that you are using Win7 RC1. Though RC1 is better than beta but still it is not a final version. Could try your app or our samples on a final version of Windows 7?

Imgen Wakin Feb 1, 2010 - 2:07 AM

Be aware that I’m testing on my laptop, so disk IO will be the bottleneck. So that’s why I want to minimize the disk IO by removing unnecessary assemblies, merging necessary assemblies and rebasing assemblies so that they won’t conflict which will cause a lot more disk IO. So please merge those Elegant.Ui.Common/Elegant.Ui.Ribbon assemblies. I can rebase it myself though. And also please remove System.Web reference.

Imgen Wakin Jan 30, 2010 - 7:21 AM

I tried it on Final Version of Windows 7, the same, around 20s. I believe that if you guys removed System.Web reference and merge Elegant.Ui.Common/Elegant.Ui.Ribbon/Elegant.Ui.Common.Theme.Office2010TP.dll/Elegant.Ui.Ribbon.Theme.Office2010TP.dll, the cold startup performance will be improved.

Imgen Wakin Jan 29, 2010 - 9:33 PM

Please remove System.Web reference for all Elegant assemblies cause one of my testers found that Elegant Ribbon will send inforation to some unknow web address without user’s consent. This could be tricky if some Anti Virus/Anti Spyware treats it as spyware. And please, merge Elegant.Ui & Elegant.Ribbon so that I can rebase it for greater performance. I’m a performance freak. Please please!

Imgen Wakin Jan 29, 2010 - 7:25 PM

We will remove the System.Web reference.


                                                                              ---------That’s good. But can I have the schedule? Cause it’s urgent and I’m very impatient.


But frankly speaking we did not manage to reach the same slow start even on slower machines (Windows 7 32 and 64). We noticed that you are using Win7 RC1. Though RC1 is better than beta but still it is not a final version. Could try your app or our samples on a final version of Windows 7?

                                                                               -----------Although it’s poosible that the delay is caused by Win7 RC, I doubt that. The cold startup has to be after the system reboot and no other .net apps are running. But I’ll try on Win7 final version.

Technical Support Feb 2, 2010 - 10:10 AM

Could you try the these assemblies? Now Elegant Ribbon should start faster at cold startup. The System.Web reference is now removed (but frankly speaking this did not help a lot). We also removed base addresses that had been specified for these assemblies.

Imgen Wakin Feb 2, 2010 - 7:57 PM

Yes, it’s faster. Now it takes about 15s to do a cold startup. So, generally, it’s 5s faster.  


Thank you very much. But I see that the assemblies are still obfuscated. That makes it impossible for me to integrate it into my application using ILMerge. Could you remove obfuscation so that I can merge them for even greater performance? I know that at least Elegant Ribbon v3.1 is not obfuscated. I know that this may lead to source code leak, but I don’t have the interest or energy to do so. You can email me the de obfuscated assemblies if you may.

Technical Support Feb 3, 2010 - 2:52 PM

Imgen, we will prepare and send you the unonfucated assemblies tomorrow but that solution with ILMerge might not work. The code does not expect that it will be forced to work in that way. This is especially relevant for loading themes. By the way, we tested the cold startup of Windows Live Writer on a clean Windows XP (virtual) and it was a bit slower (~17s again ~13s for our Scribble sample). An empty Windows Forms app starts within 5 seconds but it is really empty.

Imgen Wakin Feb 3, 2010 - 8:15 PM

Thank you very much. I’ll just ILMerge Elegant.Ui.Common/Elegant.Ui.Ribbon cause that’s what  procmon.exe reports what the bottleneck is. Again, thank you very much