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

Тема в разделе "Lotus - Программирование", создана пользователем Omh, 16 фев 2011.

  1. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Привет!
    Вопрос на засыпку, как думаете, что быстрее?
    Код (LotusScript):
    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 из второго и третьего условия, что бы не смущать.
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    КМК, самым быстрым должен быть первый вариант, самым медленным — второй.
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    а труе то зачем писать, одного условия мало?

    первое условие оперируется датой создания а не последней модификации

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ToxaRat
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Выпрями?
    Условие - созданные/изменённые после 01.01.2011

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    На локале самый быстрый — первый, второй медленнее на 12%, третий медленнее на 25%. Подозреваю, что значения сильно зависят от общего числа документов и числа отбираемых.
     
  7. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Очень примерно. @Modified возвращает, так называемую, "Initially" дату модификации (т.е. в удалённой реплике), а CutOffDate работает с "In this file" (т.е. в данной реплике). Дата Initially <= даты In this file, т.е. в результате будут лишние документы.

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    и при определённых условиях даже не рабочий ;)
     
Загрузка...
Похожие Темы - Знатоки вопрос
  1. Генералл
    Ответов:
    2
    Просмотров:
    49
  2. ApplePen
    Ответов:
    0
    Просмотров:
    51
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    90
  4. ghost
    Ответов:
    1
    Просмотров:
    85
  5. kartaman
    Ответов:
    0
    Просмотров:
    124

Поделиться этой страницей