Hi all,
I am experiencing a significant performance issue in the Servoy Web Client. The case is like this:
- The same code and UI is used in both Smart and Web Client;
- When tested with the Smart Client, the operation provides a full response in under 500ms (the code execution as seen in the Servoy Profiler view is between 250ms and 400ms and the rest of the time is taken to repaint the screen)
- When the same operation is tested with the Web Client, the whole operation takes 5+ seconds! Again, the code execution as seen in the Servoy Profiler view is under 500ms, however, the Servoy.exe process stays for about 3-4s at above 90% cpu utilization and the full page update in the browser happens after 5+ seconds.
Both operations are tested on the same machine running through the Servoy Developer 5.2.2 and the results are consistent with and without debugger running, with and without profiler running. SQL Queries do not play a role here - only 2-3 of them are executed with a total time of less than 10ms. What could be causing such an order of magnitude difference between the Smart and the Web client performance? The issue happens on multiple forms and not just a single one. The number of fields included on the forms does affect the overall result (as expected) but even with forms which have about 10 fields and 10 labels the web response is 3-4 seconds. By the looks of it, most of the time is spent after our code execution is completed - as if the Application Server is taking quite a bit of time to prepare and send the Ajax response to the browser. Profiling the web app running in the browser with Firebug reveals that only a single request is made to the server. The operations in question are very trivial - for example, setting the form in "edit" mode (which enables the edit fields and fills in values programmatically in a couple of them) or canceling changes (which rolls back unposted changes and sets the edit fields as read-only)
Has anyone else experienced similar issues and what might be causing them? I believe that the business logic code is not at fault since the Smart Client runs just fine. The UI on the forms is also not that complicated. We do use however form "inheritance" (a "base" form with no UI parts contains the common logic, it is extended by another non-UI form which contains specific business logic which in turn is extended by a third form which contains only UI and "inherits" the logic from the parents)
Any suggestions or recommendations on how we may approach resolving this issue are more than welcome.