I'm in a quest to optimize my pages, here's what I found. Let's start with a base rendering time of 9ms, a few standard controls, about 3 database calls. All this adds up to 9ms; for what it does not too bad. I measure this by turning tracing on and hitting refresh about 10 times and calculating the average rendering time (I skip the first two to avoid the warm-up times).
OK, now I'm going to add a RadMenu, just a simple instance, absolutely no items in the menu, skinning disabled... the bare minimum. Doing this jumps the render time from 9ms to 14ms, so 5ms just to add the menu on the page. I continue by adding some code that dynamically builds some menu items, about 10 menu items (including subitems). My average is now 15ms, so that code must have added 1ms. Fine, now I leave the code that builds the menu and override OnPreRender where I remove all the items in the menu. After doing this my average drops back to 14ms; my conclusion: that extra 1ms was spent rendering the output, not in what I'm doing, but let's not be too picky, let me move on to RadPanel.
I take out the OnPreRender code so my average goes back to 15ms, and I add an empty RadPanel. Same story as with the menu, just a simple panel with no items, no skin, nothing. My average is now 22ms, a 7ms jump just for adding a RadPanel that does absolutely "nothing". Next step is to add the code that builds some items, about 3 RadPanelItems each with a menu inside. Each menu has between 1 and 4 items, so nothing big. Doing this my average jumps to 34ms. So I'm thinking: 'I must be doing a lot of work for 12ms.' I do the same trick I did for the menu and on pre-render I remove the items but leave the code that generated them. After I do this the rendering time goes back down to 22ms, so whatever I'm doing to build the items doesn't really add up to much.
So, let me summarize all this. I started with 9ms which includes 3 database calls (fairly complex queries) and a number of other controls. Adding a menu with about 10 menu items adds 5ms and adding a panel bar adds another 19ms for a total of 24ms, time that does not include the code I use to generate the items. My page went from 9ms to 34ms, 3 fold increase. To say the least I'm not impressed.
OK, now I'm going to add a RadMenu, just a simple instance, absolutely no items in the menu, skinning disabled... the bare minimum. Doing this jumps the render time from 9ms to 14ms, so 5ms just to add the menu on the page. I continue by adding some code that dynamically builds some menu items, about 10 menu items (including subitems). My average is now 15ms, so that code must have added 1ms. Fine, now I leave the code that builds the menu and override OnPreRender where I remove all the items in the menu. After doing this my average drops back to 14ms; my conclusion: that extra 1ms was spent rendering the output, not in what I'm doing, but let's not be too picky, let me move on to RadPanel.
I take out the OnPreRender code so my average goes back to 15ms, and I add an empty RadPanel. Same story as with the menu, just a simple panel with no items, no skin, nothing. My average is now 22ms, a 7ms jump just for adding a RadPanel that does absolutely "nothing". Next step is to add the code that builds some items, about 3 RadPanelItems each with a menu inside. Each menu has between 1 and 4 items, so nothing big. Doing this my average jumps to 34ms. So I'm thinking: 'I must be doing a lot of work for 12ms.' I do the same trick I did for the menu and on pre-render I remove the items but leave the code that generated them. After I do this the rendering time goes back down to 22ms, so whatever I'm doing to build the items doesn't really add up to much.
So, let me summarize all this. I started with 9ms which includes 3 database calls (fairly complex queries) and a number of other controls. Adding a menu with about 10 menu items adds 5ms and adding a panel bar adds another 19ms for a total of 24ms, time that does not include the code I use to generate the items. My page went from 9ms to 34ms, 3 fold increase. To say the least I'm not impressed.