#dominoforever | Product Ideas Portal

 

Welcome to the #dominoforever Product Ideas Forum! The place where you can submit product ideas and enhancement request. We encourage you to participate by voting on, commenting on, and creating new ideas. All new ideas will be evaluated by HCL Product Management & Engineering teams, and the next steps will be communicated. While not all submitted ideas will be executed upon, community feedback will play a key role in influencing which ideas are and when they will be implemented.

For more information and upcoming events around #dominoforever, please visit our Destination Domino Page

Allow to accelerate home-office by reducing the effects of latency

Hi there,

I suggest the following 2 ideas to get more speed in home office:

  1. The client cache for design elements should not(!) delete the design elements in the cache, when the database (DB) gets closed, other wise they need to get loaded again whenever the DB gets opened again. But if they still exist in the cache, they load very fast (local) and the traffic for the server gets slightly reduced. Only the signatures of the design elements need to be compared with those on the server, so that updates can take place.

  2. Allow to prefetch documents in Lotusscript, Java and Javascript.

Example:

Assume an average latency of 40ms (Notes -> Server and Server -> Notes)

I also assume that he server is able to retrieve a document in 1ms

Sub NormalLoop(view As NotesView)

Dim doc As NotesDocument

Set doc=view.Getfirstdocument 'total time 2*40+1=81ms

Do Until doc Is Nothing

'whatever needs to be done 'A little bit: 1ms, heavy stuff: 80ms

Set doc=view.Getnextdocument(doc) 'total time 81ms

Loop

'a single loop run would take it his exmaple an average of 162 or 242 ms

End Sub

Sub FastLoop(view As NotesView)

Dim doc As NotesDocument

Dim cached as boolean

cached=true

Set doc=view.Getfirstdocument 'total time 2*40+1=81ms

Do Until doc Is Nothing

Call view.GetNextDocument(doc,cached) 'total time 1ms, prefetch !!!

'whatever needs to be done 'A little bit: 5ms, heavy stuff: 80ms

Set doc=view.Getnextdocument(doc) 'retrieves from local cache:1ms

Loop

'a single loop run would take it his exmaple an average of 161 or 82 ms

End Sub

The command " Call view.GetNextDocument(doc,cached)" would be implemented so that it would send the request to the server, but would not wait for the result delivery. LS could continue, it would not wait for the document. When the server delivers the document to the cleint, it would be stored in the cache(client background job), so that the next "Set doc=view.Getnextdocument(doc)" would be solved by the local cache, if the document has already arrived. Otherwise it has to wait for reception, but still less than the total latency time !!.

So for a loop with heavy workload, that would significantly accelerate the loop. For a simple change of 1 string field, there will be not a lot benefit though.

Collections could even internally handle the pre-fetch, if allowed to.

Locking could be processed accordingly.

Jochen "Joe" Herrmann

  • Guest
  • Nov 16 2020
  • Needs clarification
  • Attach files
  • Guest commented
    16 Nov, 2020 10:50am

    Well, thats what I do indeed to develope in the home office.

    But in our company and other companies there are lots of databases which reside on the servers and where lots of people have access to. If they would use local replicas, we would have to handle all the replication conflicts. And I'm quiet sure that i.e. the transaction key methods are not able to produce unique numbers. A lots of databases were build in a time where replication and home office was not really important. Thats has chanfged now dramatically.

    Jochen "Joe" Herrmann

  • Admin
    Thomas Hampel commented
    16 Nov, 2020 10:40am

    Why not simply create a local replica and eliminate all latency completely?