Friday, March 25, 2011

WebCenter 11g PS3 Performance Tuning and Iterative Development Mode

If you didn't know already, new WebCenter 11g PS3 supports by default Iterative Development mode. This mode allows more rapid development by reducing redeployment cycles, basically WebCenter catalog and MDS repository information is reloaded and reconstructed on each request. This makes all changes visible almost instantly. Iterative Development mode is supported only when running on embedded JDeveloper 11g WebLogic server. This means, even you will do deployment on standalone WebLogic server with Iterative Development mode enabled, it will be disabled automatically. However, it often happens when we need to do demo or run prototype from embedded JDeveloper 11g WebLogic server. If you are not aware about Iterative Development mode, most probably you will be wondering - 'why it works so slow'. Keep in mind, you should disable Iterative Development mode for better performance, when running on embedded JDeveloper 11g WebLogic server - 1.5.4 Turning Off Iterative Development. At the same time Iterative Mode is very useful during development phase, just don't forget to switch it off, when you will do demo to your boss ;-)

For experiment, I did comparison of both times - when running with Iterative Development mode enabled and without. Download sample application test case, where Iterative Mode is already disabled - WebCenterPerformance.zip.

If you will open Application Properties -> Run -> WebCenter, by default Iterative Development mode will be enabled:


Before I will start explaining different time statistics, let me share with you one technical hint from provided sample application, related to WebCenter Composer. By default, WebCenter Composer Change Model link is enabled always, even when composer editor screen is activated. To prevent this, you can use #{!composerContext.inEditMode} expression language, and render Change Mode link only when its needed:


Sample application imports ADF Library with bounded ADF Task Flows and implements WebCenter menu navigation model:


Imported task flows are enabled for authenticated role:


I will run sample application in Iterative Mode on embedded WebLogic server and will report time statistics. Time statistics are taken on second page load, this means when page was already compiled on runtime. Login action and default home page are loaded in 1.9 sec:


Click on Edit link to change Composer mode, WebCenter Composer load time is 1.16 sec:


Invoke WebCenter menu navigation model by clicking on Departments link - ADF task flow is loaded in 984 ms:


Detail task flow for employees data with read-only table is loaded in 1.8 sec:


Let's switch off Iterative Development mode and test again:


Login action is completed and default page is loaded in 1.18 sec, its much faster comparing to 1.9 sec with Iterative Mode on:


Composer is loaded much faster now, just in 180 ms comparing to 1.16 sec:


ADF task flow is loaded in 172 ms comparing to 984 ms:


Detail read-only table task flow is loaded in 360 ms comparing to 1.8 sec:


You can see that, there is significant performance differences. Similar performance you will get when deploying to standalone WebLogic server. You should be aware of Iterative Development feature and turn it off, when needed.

I don't have goal to compare different browsers, but you should be aware that application performance can depend on which browser you are using. Previous timings were produced with Firefox 3, now I will run sample application (Iterative Development mode is off) in Google Chrome 10. You should take into account and test your application on different browsers for better performance.

In Google Chrome, login action is done and the same default page is loaded just in 376 ms, thats a big difference comparing to 1.18 sec with Firefox:


Composer is opened in 168 ms, a bit faster as well comparing to 180 ms:


ADF task flow is loaded in 146 ms comparing to 172 ms in Firefox:


ADF task flow with detail read-only table is loaded in 227 ms comparing to 360 ms in Firefox:


Thats all about performance statistics. Now let me show you one great feature of WebCenter Portal Framework - external page support. With WebCenter Composer we can add external Web page frame:


External Web page is loaded inside WebCenter/ADF screen - this can be any external page or your corporate third-party Web application:


In my future posts, I will show how you can do automatic login into secured third-party Web applications through WebCenter External Application connection.

Because our default landing page is granted with anonymous public access, even after logout - we still can see resource that was added through WebCenter Composer:


No comments: