Skip to Content
author's profile photo Former Member
Former Member

Performance Issues

hii everybody,

I wanted to know that if we r making one mi application what can be the various performance factors that are associated with the application.response time , redundancy etc. and what can be done to increase the performance.(ie reducing response time etc..)

thanks in advance.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2006 at 09:41 AM

    Hi Devendrakumar

    Please go thru the MDK performance tips for a clear understanding on Mi application performance tuning.



    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 10, 2006 at 09:27 AM

    Hi Devendrakumar ,

    the most important thing is IMO the UI: Use AWT instead of JSP. If this is not possible, then try to keep the html that you create as simple as possible: No nested tables and no images. The bottleneck here is the Pocket IE; it renders the html extremely slow.

    Other then the UI:

    - Use DB2e instead of File I/O, which is a lot faster if the amount of data grows.

    - Try only to use the latest SmartSync APIs.

    - If some of your database accesses require a lot of time, add performance trace points in your code (or simple measure the time that your functionality requires by subtracting the time before and after); try to find another way of accessing the data (most of the time there is more then one MI API to do the same thing).

    Hope this helps!

    Br, alex


    alexander ilg

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Hii Jo,

      we have a specific buisness scenario where we have to reduce the time taken by jsp page to upload from 6-7 seconds to 3 seconds (when we are fetching the data from the local database)and we have used some deprecated classes like









      Untyped read

      Use of values > 18 digits


      SyncBoDataFacade.getRows(Query) / SyncBoDataFacade.getSyncBos(Query)


      Use of multiple attributes and attributes links


      Query + QueryRuntime

      Number of handlers

      “Check the Type” flag







      now we are trying to replace it with the classes & method as described in java docs. but there are some classes and methods which are deprecated but what to use instead of them is not provided .I am currently working with Smart Sync application. I need to know the other option that should replace some of the depricated Smart Sync APIs.

      e.g. SyncBoInDeltaObserver is depricated. Instead of this interface we should use SyncReplyObserver.

      Similarly can u tell me for the following classes / interfaces / methods is there any option available?

      1) SyncBoOutDeltaObserver

      2) SyncBoOutDelta

      3) SyncBoInDelta

      4) Row.createUnlinkedCopy()

      second thing,

      i just want to know that is it possible to reduce the time taken by making above changes.

      Thanks in advance.


  • author's profile photo Former Member
    Former Member
    Posted on Oct 12, 2006 at 10:50 PM

    Hi Deven.

    Don't know if it will help a lot, but, specifically for PDA scenarios, loading the images in the JSP's take a noticeable amount of time. In the order of 1-1.5 second per image. This is in large part due to the processing of the HTTP request, and encoding/decoding of the image data. In a MAM page (for example), where you have the banner logo, buttons, and others, there may be 4 or 5 images. This translates into maybe 3-7 seconds just loading images.

    One way to speed this up is to change the JSP application pages so that they load the images using file:// URL's instead of HTTP. To continue with the MAM example, you can create a "helper" bean object that accomplishes that purpose, and change the img tags so that they get the URL prefix from this object instead.

    Hope this helps,


    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Devendra,

      as already pointed out by others often there is a lot of performance potential by improving your UI. If you have screen response times of 6-7 seconds than you should first find out which layer consumes most time. For example rewrite one of your JSP temporarily so that it does not fetch the data from the Smart Sync layer but use dummy data instead. If you still have those long response times you know that improving access to Smart Sync read/write api is not worth to investigate.

      But if the response time comes significantly down using the dummy data you can improve your access of the Smart Sync layer.

      Regarding the deprecated APIs you mentioned above: Using deprecated Smart Sync APIs in the SyncBoInDelta... or SyncBoOutDelta... area affects mostly the synchronization time and not directly the response times in your application. But of course there is an indirect affect: Using those deprecated API increases the memory consumption of the synchronization. The more memory you need the more often JVM's garbage collector is running which is very expensive on PDAs. And those garbage collection runs can happen while navigate in your application. So if possible avoid using those deprecated APIs. These are my suggestions regarding the undocumented alternatives:

      1) SyncBoOutDeltaObserver

      -> There is no direct alternative. There are only rare cases where it really makes sense to observe the outgoing data. The problem of this API is that it forces the MI client to created a lot of object while sync outbound processing (SyncBoOutDelta, RowChange...) and hinders the Smart Sync implementation to use some internal performance optimization.

      2) SyncBoOutDelta

      see 1.)

      3) SyncBoInDelta

      Also here the Smart Sync is forced to create a lot of Calllback classes while the sync inbound processing. Only in rare cases there is a really need to observe all incoming data. Normally you only need callbacks for errors and conflicts to display a information to the user. For this you can either use SyncReplyObserver or the ErrorConflictInbox (for this you need to configure your MCD accordingly).

      4) Row.createUnlinkedCopy()

      Instead of reading a Row, create an unlinked copy, change the fields (Row#setFieldValue) of the copy and then replace the original with the copy (SyncBo#replaceRow) you can use Row#modifyFieldValue(...) on the original Row and at the end SyncBo#modifyRow(...) to persist the changes.

      Hope this helps.



Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.