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

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

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

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

Сравнение скорости работы Lotusscript и Java

  • Автор темы v2v
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

v2v

Итак решил я выделить часок на написание двух аналогичных агентов на Java и LotusScript и сравнения скорости их работы.
Результаты получилися очень интересными.
Прошу. Коды агентов, а далье результаты работы.
(клиент лотуса 6.5.5)

---------------------------------------!
Код:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
long start = System.currentTimeMillis();
Session session = getSession();
AgentContext agentContext = session.getAgentContext();		 
Database db = agentContext.getCurrentDatabase();
DocumentCollection dc = agentContext.getUnprocessedDocuments();
Document doc = dc.getFirstDocument();
int k=0;			
while (doc != null) 
{
if (doc.getItemValueString("SendTo")!="")
k=k+1;
doc = dc.getNextDocument(doc); 
}
long end = System.currentTimeMillis();
System.out.println("Document parsed: " + "".valueOf(k) + " by time: " + "".valueOf(end-start));
} catch(Exception e) {
e.printStackTrace();
}
}
}

---------------------------------------!

Код:
Sub Initialize
Dim start As Integer
Dim endt As Integer
start=Second(Now())
Dim session As New NotesSession	
Dim db As NotesDatabase
Set db=session.CurrentDatabase
Dim dc As NotesDocumentCollection
Set dc = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc=dc.GetFirstDocument
Dim k As Integer
While Not(doc Is Nothing)
If (doc.GetItemValue("SendTo")(0)<>"") Then
k=k+1
End If		
Set doc=dc.GetNextDocument(doc)
Wend	
endt=Second(Now())
Dim tm As Integer
tm=endt-start
If (tm<0) Then
tm=tm+60
End If
Print "Documents parsed: " + Cstr(k) + " by time: " + Cstr(tm)
End Sub
---------------------------------------!


Тестирование проводилося на почтовой базе данных (представление "Все письма" в базе) по всем документам.

Тест №1
Запускался лотус, открывалася нужная база, представление и 5ть раз подряд запускался агент.

Скорость работы Java агента(время в милисекундах!!!):
Document parsed: 370 by time: 52683
Document parsed: 370 by time: 41612
Document parsed: 370 by time: 32431
Document parsed: 370 by time: 30370
Document parsed: 370 by time: 29414

Скорость работы LotusScript агента(время в секундах!!!):
Document parsed: 366 by time: 33
Document parsed: 366 by time: 30
Document parsed: 366 by time: 31
Document parsed: 366 by time: 30
Document parsed: 366 by time: 31

вышел из лотуса

Тест №2
По очереди запустил LotusScript затем Java агенты:
LS: Document parsed: 366 by time: 31(с)
Jv: Document parsed: 370 by time: 29437(мс)

вышел из лотуса

Тест №3
Наоборот:
Jv: Document parsed: 370 by time: 29899(мс)
LS: Document parsed: 366 by time: 31(с)

вышел из базы данных, но лотус не закрывал

Тест №4
Jv: Document parsed: 370 by time: 29540(мс)
LS: Document parsed: 366 by time: 32(с)

после перезагрузки Windows
Тест №5
Jv: Document parsed: 370 by time: 26390(мс)
LS: Document parsed: 366 by time: 31(с)

Среплицировал почтовую базу данных себе на локал( у меня её там не было вообще!)
Вышел из лотуса.

Тест №6

По очереди позапускал агентики, вот тоже интересные результаты получилися:
Jv: Document parsed: 370 by time: 9901(мс)
LS: Document parsed: 366 by time: 4(с)
Jv: Document parsed: 370 by time: 3848(мс)
LS: Document parsed: 366 by time: 4(с)
Jv: Document parsed: 370 by time: 3425(мс)
LS: Document parsed: 366 by time: 4(с)

Выводы...
Я выводы для себя сделал, но мне интересно услышать мнение окружающих.
 
K

Kee_Keekkenen

а как агенты запускались руками(локально или на сервере) или по расписанию ?
 
N

nor

Для: v2v

Хотелось бы услышать, какой конкретно вывод вы сделали из вышеописанных тестов?

Известно, что локальные LS агенты работают быстрее локальных Java агентов. Однако серверные LS агенты работают медленнее серверных Java агентов.
 
K

Kee_Keekkenen

согласен с nor

в общем случае локальный LS ~ в 2 раза быстрее, чем локальный Java, на сервере, наоборот,
НО серверные агенты медленне, чем локальные..
 
V

v2v

ясное дело что при обращение к серверу теряется время, и такие агенты работают медленне.
Но я не сказал бы что Java агенты на столько уж медленней(в 2 раза), возможно это связано с выполнением каких то специальных операций по работе с lotus и которые оптимизированы в lotus notes но в данном случае, по результатам тестов, видно что java агенты работают по скорости соизмерими с lotus script.
Так что можно смело использовать java для написание приложений для Lotus...
 
K

Kee_Keekkenen

к примеру, попробуй осуществить следующее..<br>документы создаются непосредственно в представлении, используется свойство представления <br>Create new documents at view level.. используются редактируемые колонки, при заполнении каждого поля пользователь вводит несколько символов, далее ентер по введенным символам производится поиск по всем документам представления и выводится уникальный список значений поля по текущей колонке, в которых присутствует введенное пользователем слово...<br><br>на LS это будет работать значительно быстрее, чем на java<br>
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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