Notesviewentry.universalid дергает сам документ?

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#1
Привет!

Кто знает, notesViewEntry.UniversalID достает документ из БД или читает значение из индекса вида?
Т.е. есть ли смысл использовать notesViewEntry вместо документа, если надо читать свойство notesViewEntry.UniversalID?
Хотя, можно добавить еще один столбец с унидом в вид и не париться... Но вопрос уже созрел ))
 

nvyush

Lotus team
22.04.2009
2 317
0
#2
есть ли смысл использовать notesViewEntry вместо документа, если надо читать свойство notesViewEntry.UniversalID
КМК, за документом Lotus обращается в базу только по notesViewEntry.Document, остальные свойства читаются из самого notesViewEntry, т.е. смысл есть.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#3
А кто вообще сказал, что использовать notesViewEntry вместо документа будет производительнее?
Подробнее кто условия такой производительности может рассказать?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#4
Подробнее кто условия такой производительности может рассказать?
мат-лы есть в гуле и я - под конкретную задачу смотрел
энтрисы берут индех вида, док - тянет поля с сервера
ощутимо будет, при обращении к сервреру
 

nvyush

Lotus team
22.04.2009
2 317
0
#8
В подтверждение сказанного
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">результаты профилирования простенького агента</div></div><div class="sp-body"><div class="sp-content">UNID = entry.UniversalID
Class Method Operation Calls Time
Session CurrentDatabase Get 1 0
Database Views Get 1 547
View AllEntries Get 1 47
ViewEntryCollection GetFirstEntry 1 15
ViewEntry UniversalID Get 1 0

UNID = entry.Document.UniversalID
Class Method Operation Calls Time
Session CurrentDatabase Get 1 0
Database Views Get 1 344
View AllEntries Get 1 47
ViewEntryCollection GetFirstEntry 1 0
ViewEntry Document Get 1 15
Document UniversalID Get 1 0

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код агента</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim entry As NotesViewEntry
Dim UNID As String
Set db = s.CurrentDatabase
Set view = db.Views(0)
Set entry = view.AllEntries.GetFirstEntry
UNID = entry.UniversalID 'в первом варианте
UNID = entry.Document.UniversalID 'во втором варианте
End Sub
P.S. Время исполнения отдельных операций в данном случае роли не играет (зависит от загрузки сервера, сети, бокового ветра), главное — число и суть операций.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#9
не поленился...
но результат меня удивил (или я где-то напортачил, к вечеру)
нахожусь в тяжёлом недоумении..., локально - медленнее на энтрисах, вариант клент-сервер ситуёвина не луче - на энтрисах 1.5-2 раза хуже (как минимум)
клиент 7.0.4 под вайн 1.2.2
сервак 7.0.2 под РедХат (стареньком)
результаты:
-локально NDC-1sec, NVN-5sec
-клиент-сервер NDC-52sec, NVN-90sec

т.е. в данных условиях (10тыс доков), пробег по полной колекции доков - быстрее, чем по нвигатору (вариант вьюэнтрисколлекшн - ещё хуже)
Посмотреть вложение performance.nsf.zip
 

Вложения

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#10
нахожусь в тяжёлом недоумении...
Теперь и я ))) Хотя код переделать не составит труда, все-равно я GetAll...ByKey использую. Но ситуация выходит нелепая ))
Хотя, мне ближе все же метод прохода по документам, т.к. там и поля более "типизированы", т.с. Но вот решил использовать индекс.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#11
я решал специфичные задачи, возможно, зависит от вьюшки...
у меня никак по докам не получалось - вернее логика там была такова, что доки потом анализировать и отбирать повторно надо былобы

Добавлено: кстати - да!
похачив колонку с вЭриантом (многозначное поле, но не спличеное во вью)
получил сопоставимый резалт на локале

Добавлено: вот очередное подтверждение :lovecodeby: - во всём нужен подход к задаче (вторую колонку я специально делал сложной)
видать кэша на индекс не хватало, что убивало перформанс
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#12
гляжу на сетку и вижу интересную картину - сперва (при проходе по энтрисам) трафик очень мал, но с опред. момента (где-то половина) он возрастает "по-полной"
возможно подкрутив к-то правметры - можно добиться лучшего перформанса, на энтрисах