Знатоки, вопрос!

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#1
Привет!
Вопрос на засыпку, как думаете, что быстрее?
Код:
Dim Coll As NotesDocumentCollection
Dim i As Integer
Const MAX = 100
Dim DateDT As New NotesDateTime(Datenumber(1, 1, 2011))

For i = 1 To MAX
Set Coll = db.Search({@True}, DateDT, 0)	
Next

For i = 1 To MAX
Set Coll = db.Search({@Modified > @Date(2011; 1; 1)}, Nothing, 0)
Next	

For i = 1 To MAX
Set Coll = db.Search({@Modified> @Date(2011; 1; 1)}, DateDT, 0)
Next
По идее, все сёрчи должны вернуть примерно одно и то же :)

Убрал @True из второго и третьего условия, что бы не смущать.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#3
а труе то зачем писать, одного условия мало?

По идее, все сёрчи должны вернуть примерно одно и то же
первое условие оперируется датой создания а не последней модификации

все три условия корявые
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#5
Выпрями?
Условие - созданные/изменённые после 01.01.2011

а труе то зачем писать, одного условия мало?
В первом условии стоит тру, решил и в остальные засунуть.
Это не рабочий код, это теоретичкеский вопрос.
Сферический конь в вакууме.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#6
На локале самый быстрый — первый, второй медленнее на 12%, третий медленнее на 25%. Подозреваю, что значения сильно зависят от общего числа документов и числа отбираемых.
 

TIA

:-)
Lotus team
15.05.2009
790
1
#7
По идее, все сёрчи должны вернуть примерно одно и то же
Очень примерно. @Modified возвращает, так называемую, "Initially" дату модификации (т.е. в удалённой реплике), а CutOffDate работает с "In this file" (т.е. в данной реплике). Дата Initially <= даты In this file, т.е. в результате будут лишние документы.

По сути вопроса: из практики, первый вариант самый быстрый.
Разница по времени со вторым тем больше, чем больше документов с датой меньше DateDT, т.к. при Search проверяются все доступные документы на соответствие поисковой формуле. Документы с датой меньше DateDT при этом отсекаются каким-то другим, более быстрым способом.