Goals

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.

Complete?

JiraDescriptionCompleted?
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
JiraDescriptionCompleted?
Profile script execution to identify top bottlenecks(tick)

Global handler for disclosure content

(tick)
Dirty field rewrite(tick)

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

(tick)

Avoid running scripts on non-visible content 

(tick)

Script logic performance pass  

 

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

(tick)

Validation framework improvement for handling collections differently 

(tick)

Cut marker spans when not used 

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

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

Complete? (tick)


JiraDescriptionCompleted?
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 
Documentation 

Scheduling