Re: Using Lotusscript lists to increase performance

In response to: Using Lotusscript lists to increase performance

I now modified the code to use NotesViewEntry.ColumnValues() to get the value I am looking for. I also had to add a column displaying that field in my view.
The code actually took longer, 370 seconds, but all that was in the calls to doc.Save(). The actual lookup went from a total of 15 seconds down to just below 5 seconds.

Using NotesViewEntry.ColumnValues()

So let’s remove the time-consuming doc.Save() command, just to see what the actual execution time is. Here is the result for my four versions of the same import agent:

Agent Time
 
 Individual lookups for each entry imported  370 sec
 Building list of documents using view lookup/doc.GetItemValue() before importing  55 sec
 Building list of documents at first use, using view lookup/doc.GetItemValue()  54 sec
 Building list of documents at first use, using viewentry lookup/entry.ColumnValues()  36 sec

By removing the print statement that give feedback about the progress (printing every 100 entries), additional 3 seconds would be saved.

So there is a substantial performance benefit when you don’t have to open the actual document and read a value, but can use a view column value instead. If you need multiple values from one document, one easy way is to combine all values into one column, separated with a character that you will never enjounter in the data (I am partial to the ~ character, it also makes it easy to read) and then use Split() to get the individual values.

 

 

Leave a Reply