Sluggish UI when upgrading to Vaadin 7.2

Hello,

We have upgraded the Vaadin framework for our application from 7.1.12 to 7.2.0 and we have noticed a significant decrease in speed in our application when handling push events.

I decided to set up a test and profile the application utilizing the Chrome Developer Tools and it seems that the newer version of Vaadin is taking almost twice the amount of time in scripting as before.

My test involved running two instances of our application side by side in the same browser pushing the same events to the client at the same time. The only differences between the two instances are as follows:

Instance 1:

  • Vaadin 7.1.12 (and its respective GWT library)
  • Atmoshpere 1.0.18.vaadin3
  • Jetty 8.1.4

Instance 2:

  • Vaadin 7.2.0 (and its respective GWT library)
  • Atmoshphere 2.1.2.vaadin2
  • Jetty 9.1.5

Attached is a screen-shot of the profiling results in the Chrome developer tools. The left section is Instance 1 and the right section is Instance 2.

As you can see Instance 2 is taking almost twice the amount of time for javascript processing as Instance 1.

I have verified that atmosphere is utilizing web sockets and verified that production mode is turned on on both instances:

2014-05-28 12:38:22,331 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Auto detecting WebSocketHandler in /WEB-INF/classes/
2014-05-28 12:38:22,332 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol 
2014-05-28 12:38:22,343 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Installing Default AtmosphereInterceptor
2014-05-28 12:38:22,344 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
2014-05-28 12:38:22,344 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor
2014-05-28 12:38:22,345 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
2014-05-28 12:38:22,346 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
2014-05-28 12:38:22,347 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support
2014-05-28 12:38:22,347 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
2014-05-28 12:38:22,348 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
2014-05-28 12:38:22,349 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
2014-05-28 12:38:22,350 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
2014-05-28 12:38:22,350 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
2014-05-28 12:38:22,351 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework -     org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
2014-05-28 12:38:22,351 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
2014-05-28 12:38:22,352 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper
2014-05-28 12:38:22,352 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache
2014-05-28 12:38:22,352 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
2014-05-28 12:38:22,352 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Broadcaster Polling Wait Time 100
2014-05-28 12:38:22,352 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Shared ExecutorService supported: true
2014-05-28 12:38:22,353 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Messaging Thread Pool Size: Unlimited
2014-05-28 12:38:22,353 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Async I/O Thread Pool Size: 200
2014-05-28 12:38:22,353 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
2014-05-28 12:38:22,353 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
2014-05-28 12:38:22,353 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - HttpSession supported: true
2014-05-28 12:38:22,354 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Atmosphere is using DefaultAtmosphereObjectFactory for dependency injection and object creation
2014-05-28 12:38:22,354 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Atmosphere is using async support: org.atmosphere.container.Jetty9AsyncSupportWithWebSocket running under container: jetty/9.1.z-SNAPSHOT with WebSocket enabled.
2014-05-28 12:38:22,354 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Atmosphere Framework 2.1.2.vaadin2 started.
2014-05-28 12:38:22,357 [main-server]
 [ManagedServiceFactory Update Queue]
 INFO  org.atmosphere.cpr.AtmosphereFramework - Installed AtmosphereInterceptor  Track Message Size Interceptor using | with priority BEFORE_DEFAULT

I was hoping that the upgrade would have increased efficiency not decreased it. I am not sure there is something that I am overlooking or one of the upgraded libraries has an efficiency issue that needs to be resolved.

If anyone has any insight into the issue please let me know. It is very critical that we get our application running up to par.

Thank You,
Mike
14109.png