• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Omh
  • Дата начала
O

Omh

Привет!
Вопрос на засыпку, как думаете, что быстрее?
Код:
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 из второго и третьего условия, что бы не смущать.
 
N

nvyush

КМК, самым быстрым должен быть первый вариант, самым медленным — второй.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
({@True & @Modified> @Date(2011; 1; 1)},
а труе то зачем писать, одного условия мало?

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

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

Omh

все три условия корявые
Выпрями?
Условие - созданные/изменённые после 01.01.2011

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

nvyush

На локале самый быстрый — первый, второй медленнее на 12%, третий медленнее на 25%. Подозреваю, что значения сильно зависят от общего числа документов и числа отбираемых.
 
T

TIA

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!