Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/152: Рейтинг темы: голосов - 152, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 256

Засечка времени выполнения скрипта

01.08.2010, 11:59. Показов 27805. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какие есть функции (и вообще есть ли они) для засекания времени выполнения скрипта?
Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2010, 11:59
Ответы с готовыми решениями:

Ограничение выполнения скрипта по времени
Добрый день. Как известно, по умолчанию время работы скрипта max_execution_time на сервере равно 30 сек. Мой скрипт подсчета статистики...

Планирование времени выполнения скрипта JS
Всем привет! Я не очень знаю JS язык только начинаю. Так вот, кто может исправит скрипт чтобы он появлялся не по секундам, а по дате и...

Результат выполнения программы в консоли пропадает после выполнения скрипта
нужно отпарсить файл , но мне надо видеть что выводит сценарий , иначе мне его неотладить. Запускаю файл вот так python index.py

18
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
01.08.2010, 12:13
http://www.breakingpar.com/bkp/home.nsf/0/...72571F0000895B0

Code
1
2
3
4
5
6
Dim startTic As Long
Dim seconds As Double
startTic = Getthreadinfo(6)
your code goes here
seconds = (Getthreadinfo(6) - startTic) / Getthreadinfo(7)
Print "Finyshed. The code ran for " & Format$(seconds, "##0.00") & " seconds."
P.S. как-то постил это же в виде класса:
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 14:23
делал на java с LS2J...
там еще лог вела (в массиве, собсно - потому и джава) и max, min, avg выдавала
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
01.08.2010, 15:24
а Timer() не проще использовать?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 15:54
Цитата Сообщение от Akupaka
а Timer() не проще использовать?
а точность не смущает?

Returns the time elapsed since midnight, in seconds.
Syntax
Timer
Return value
Timer returns the number of seconds elapsed since midnight as a Single value.
0
0 / 0 / 0
Регистрация: 04.08.2008
Сообщений: 408
01.08.2010, 16:21
а чем плохо просто время брать в начале и конце скрипта?


LotusScript
1
2
3
4
5
    Dim dtStart As New NotesDateTime("")
Dim dtEnd As New NotesDateTime("")
Call dtStart.SetNow
... Код
Call dtEnd.SetNow
Ну и если надо, то можно и в массив загонять. Можно в лог писать и статистику потом готовить.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 16:47
xalet
не всегда нужен весь код, чаще - его куски, особливо - время кажного цикла (буде таковые имеются)
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
01.08.2010, 17:02
LotusScript
1
2
3
4
5
6
    Declare Function GetTickCount Lib "kernel32" () As Long
d=GetTickCount
For i=1 To 1000
Print d
Next
Print Cstr(GetTickCount-d)
разница в миллисекундах
0
0 / 0 / 0
Регистрация: 04.08.2008
Сообщений: 408
01.08.2010, 17:06
Цитата Сообщение от lmike
не всегда нужен весь код, чаще - его куски, особливо - время кажного цикла (буде таковые имеются)
так что мешает печатать, в логи пихать или просто в массив. я же самый примитивный вариант нарисовал...

а форум сейчас всегда таким и будет?
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
01.08.2010, 17:23
to xalet:
NotesDateTime не особо дружит с интервалами меньше секунды. Для отладки/профилирования иногда полезны сотки... А суть ессно та же: меряем в начале, в конце и выводим дельту.
А что не так с форумом? Если режим отображения поломался( появилось дерево ) - то это возможно мой косяк. Я ниже ссылку дал с &mode=threaded. После перехода по ссылке весь форум начинает открываца в таком виде... Исправляеца в "Опциях".

to Darker
ага. Lib "kernel32" - самое оно для серверного агента под os400 Нафига использовать внешние либы, когда есть штатные документированные средства, делающие абсолютно то же самое?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 17:28
Darker
вариант выше - тоже миллисекунды..., а ваш - "ущербен" привязкой к ОС
вот на джава (там же)^
http://www.breakingpar.com/bkp/home.nsf/0/...7256EAF007B2235

есть еще System.currentTimeMillis()
вот библа (не оптимизировал):

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package org.performance;
import java.util.*;
public class Timer {
private String[] rows;
private ArrayList elapsed=new ArrayList();
private long max=0;
private long min=0;
private long sum=0;
private int count=-1;
private long last=0;
final short STATUS_STOPPED=0;
final short STATUS_STARTED=1;
final short STATUS_PAUSED=2;
private short status=STATUS_STOPPED;
private boolean nodetailsFlag=false;
private final String[] template={"Кол-во:",";суммарно:",";максимально:",";минимально:",";среднее:"};
public Timer(){
}
public void start(){
switch (status) {
case STATUS_STOPPED:
elapsed.clear();
count=-1;
sum=0;
case STATUS_PAUSED:
last=System.currentTimeMillis();
if (!nodetailsFlag) {
elapsed.add(new Long(last));
}
count+=1;
status=STATUS_STARTED;
}
}
public void setNoDetails(boolean nodetails){
nodetailsFlag=nodetails;
}
public void pause(){
if (status==STATUS_STARTED) {
long l=System.currentTimeMillis() - last;
max = ((l > max) ? l : max);
min=((min==0) ? l : ((l<min) ? l : min));
sum+=l;
if (!nodetailsFlag) {
elapsed.set(count,new Long(l));
if (count>0) {elapsed.set(count-1,((Long)elapsed.get(count-1)).toString());} //преобразование в строку предыдущего значения
}
 
status=STATUS_PAUSED;
}
}
public String[] getDetails(){
//      if (1==1) {return new String[]{"1","2"};}
if (nodetailsFlag){return new String[]{};}
switch (status) {
case STATUS_STOPPED:
rows=new String[elapsed.size()];
elapsed.toArray(rows);
System.out.println("size:"+elapsed.size()+";first:" + rows[0]);
return rows;
}
return new String[]{};
}
public String stop(){
switch (status) {
case STATUS_STARTED:pause();
case STATUS_PAUSED:
if (!nodetailsFlag) {
elapsed.set(count,((Long)elapsed.get(count)).toString()); //преобразование в строку
}
break;
default: return "";
}
status=STATUS_STOPPED;
 
StringBuffer sb=new StringBuffer();
//суммарные параметры
int c=count+1;
Double avg= new Double((new Long(sum)).doubleValue()/c);
sb.append(template[0]);sb.append(new Integer(c));
sb.append(template[1]);sb.append(new Long(sum));
sb.append(template[2]);sb.append(new Long(max));
sb.append(template[3]);sb.append(new Long(min));
sb.append(template[4]);sb.append(avg);
return sb.toString();
}
}
LS2J:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Option Public
Option Declare
Use "ErrorHandling"
Uselsx "*lsxlc"
Use "Performance"
 
Const ERRBASE_PERFORMANCE=1100
Const ERRLS2JINIT=ERRBASE_PERFORMANCE+1, CS_ERRLS2JINIT={ошибка инициализации класса Java}
Class Performance As ErrorHandlerWJ
Private PerformanceObj  As JavaObject
Private PerformanceClass As JavaClass
Private perfName As String
Private noDetails As Boolean
Sub New(xName As String, woDetails As Boolean)
Dim fail As Boolean
On Error Goto errorhandler
Set PerformanceClass = jSession.GetClass("org.performance.Timer")
Set PerformanceObj = PerformanceClass.CreateObject
perfName=xName
If woDetails Then
Call PerformanceObj.setNoDetails(woDetails)
noDetails=woDetails
End If
ExitFunction:
If fail Then
On Error Goto 0
Error ERRLS2JINIT, CS_ERRLS2JINIT
End If
Exit Sub
errorhandler:
Call Me.RaiseError()
fail=True
Resume ExitFunction
End Sub
********************************
Sub Delete()
If Not PerformanceObj Is Nothyng Then
Delete PerformanceObj
End If
End Sub
********************************
Sub StartT()
On Error Goto errorhandler
Call PerformanceObj.start()
ExitFunction:
Exit Sub
errorhandler:
Call Me.RaiseError()
Resume ExitFunction
End Sub
********************************
Sub PauseT()
On Error Goto errorhandler
Call PerformanceObj.pause()
ExitFunction:
Exit Sub
errorhandler:
Call Me.RaiseError()
Resume ExitFunction
End Sub
********************************
Function StopT() As String
On Error Goto errorhandler
StopT = "Показатель "& perfName & {>} & PerformanceObj.stop()
ExitFunction:
Exit Function
errorhandler:
Call Me.RaiseError()
Resume ExitFunction
End Function
********************************
Function GetDetails() As Variant
On Error Goto errorhandler
If Not noDetails Then
GetDetails=PerformanceObj.getDetails()
End If
ExitFunction:
Exit Function
errorhandler:
Call Me.RaiseError()
Resume ExitFunction
End Function
End Class
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
01.08.2010, 17:34
lmike, а ваш - короток, у вас привычка сразу же накидываться, вам сразу же панацею от всех бед подавай, разве автор уточнил, что агент на серваке, или у него не винда?

to turumbay, согласен про GethreadInfo
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
01.08.2010, 17:41
Цитата Сообщение от lmike
а точность не смущает?
пока хватало )

зы: мальчики, не сорьтесь
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 17:41
Darker
зачем советовать ограниченные варианты? - такой подход, ИМХО, заслуживает порицания (привязка к ОС)
неопытный разработчик может взять код (по незнанию), а потом будет головняк

мой вариант (если посмотреть внимательно) осущ. дополнительные действия...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 18:02
<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">есть подходы, кот. у меня вызывают недоумение и неприятие...
-использование КОМ - где ни попадя
-испольшзование Экселя, для чего ни попадя
-использование винды - по любому поводу
в большинстве из указанных случаев - получим неудобство и тормоза
Пример из жизни... У нас внедряют САП, чел, кот. отвечает за загрузку/выгрузку данных юзает хехель.
есть исх. данные - 80тыс. строк, результат - 76 тыс.
как проверить соответствие (что загрузилос, что лишнее "образовалось")?
"классика жанра" - чел. берёт хехель и пишет vlookup (офис 2007), считает минут 20-ть (а то и дольше), с жуткими тормозами (а порой зависонами)
подход рациональный :
$grep -vnFf 2-SAP-CC\(woCol\)UTF8-clean.csv 1-SUN-SAP-CC\(woCol\)UTF8_clean.txt.csv > diffUTF8_clean.txt
$ grep -vnFf 1-SUN-SAP-CC\(woCol\)UTF8_clean.txt.csv 2-SAP-CC\(woCol\)UTF8-clean.csv > diffUTF8_SAP.txt
работает несколько секунд...
я "спас" человека от мучений и нашёл ошибки в данных, сэкономив кучу времени (потому как загрузка/выгрузка повторялась) ...
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
01.08.2010, 18:05
to Darker: насчет размера java кода вы несправедливы
суть решения lmike тоже в общем неплохо катит:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 вместо Declare Function GetTickCount Lib "kernel32" () As Long:
Uselsx "*javacon"
Function getCurrentTimeMillis() As Double
Dim jsession As New JavaSession
getCurrentTimeMillis = jsession.getClass("java.lang.System").currentTimeMillis()
End Function
Usage:
Sub Click(Source As Button)
Dim startTic As Double
Dim seconds As Double
startTic = getCurrentTimeMillis()
your code goes here
seconds = ( getCurrentTimeMillis() - startTic)/1000
Print "Finyshed. The code ran for " & Format$(seconds, "##0.00") & " seconds."
End Sub
хотя в свете существования getthreadinfo - использование здесь java - явный оверкил.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
01.08.2010, 18:09
turumbay
java использовалась несколько в др. ключе
и есть доп. профит - возможность использования в java агентах (и прочих сущностях)
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
01.08.2010, 18:56
<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">


Цитата Сообщение от lmike
есть подходы, кот. у меня вызывают недоумение и неприятие
на каждого нелюбителя винды и т.п. найдется любитель. и они будут любить друг другу моск до скончания веков
0
Tyo
02.08.2010, 13:37
Цитата Сообщение от lmike
а точность не смущает?
Число возвращаемое Timer является дробным (Single). Про точность в хелпе сказано строчкой ниже.
LotusScript rounds the number of seconds to the nearest hundredth.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2010, 13:37
Помогаю со студенческими работами здесь

Полиморфизм времени выполнения/времени компиляции
Здравствуйте, подскажите, пожалуйста, литературу, где мне внятно можно узнать что такое полиморфизм ВРЕМЕНИ ВЫПОЛНЕНИЯ и ВРЕМЕНИ...

Время выполнения скрипта
Мне нужно каким то образом увеличить время работы скрипта, нашел пару способов, ни один не работает... Итак, хостинг: Хостингер Нашел...

Оптимизация выполнения скрипта
есть скрипт #!/usr/bin/perl -w use strict; use XML::Simple; use Socket; use URI::UTF8::Punycode; #system '/sbin/ipfw...

Время выполнения скрипта
Здравствуйте! Пишу фреймворк для своих нужд, больше для опыта. Так вот хотел бы поинтересоваться какая скорость работы приемлемая? ...

Скорость выполнения скрипта
Как проверить скорость выполнения скрипта?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru