For 2.3, a focused effort on KRAD will be undertaken to accomplish the following goals:

  1. Achieve exceptional performance for all views, based on benchmarks set by current KRAD applications
  2. Obtain performance from our test servers that is reflective of the application
  3. Establish QA processes for insuring performance stays within benchmarks as new development occurs

Once performance metrics and benchmarks are collected they will be documented and used to gauge progress. After each phase of work a new set of performance metrics will be collected.

Top Bottlenecks

Tuning needs to occur both with server side and client side code. A good amount of previous profiling has already been done to identify the bottlenecks server side:

Server Side

The majority of tasks will focus on lowering the costs of these functions. Also, the performance in these areas degrades quickly when using collections. Therefore initial efforts will focus on views with collections (although improvements here should bring improvements for non-collection views).

The major bottlenecks with client side code have not been identified yet. Therefore the first priority here will be to identify those and then explore potential fixes.

Work Breakdown

The QA team will collect benchmark data from KRAD applications that will be used to guide the performance effort. In addition, the KRAD team will work with other applications to determine where the bottlenecks are and verify they are accounted for in the work plan.


Perform expression function setup once per lifecycle(tick)

Optimize template invocationIn Progress
Research string template method for global useIn Progress
Thin out view component graph(tick)
Reduce object creation in collectionsResearch Done, Holding on Impl
Server paging of collectionsIn Progress, for RC1

, ,


Improve Cloning Performance, Reduce CloningIn Progress, for RC1
, Remove view pooling and optimize Spring bean creationWork complete, needs patch applied, for RC1
Profile script execution to identify top bottlenecks(tick)

Global handler for disclosure content

Dirty field rewrite(tick)

Investigate the feasibility and implement aaData for other richTable based tables other than LightTable


Avoid running scripts on non-visible content 


Script logic performance pass  


Validation framework improvement to cut data that is determined to be default 


Validation framework improvement for handling collections differently 


Cut marker spans when not used 

 Create automated tests against slow viewsIn Progress
 Setup monitoring and alerts in AppDynamicsIn Progress
Document performance best practices for applications to follow 
Profile Kitchen Sink pages using App DynamicsIn Progress

Work with consultants to fine tune and determine optimal deployment configuration.

Complete? (tick)

Research multi-threading in lifecycle 

, ,

, ,

, ,

Apply contributed performance patches 

Add caching to KRAD services where possible 
Remove initial build of table details 
Add options to disable lifecycle features 
View lifecycle code optimization 
Reduce size of response (optimize markup) 
JVM Tuning