Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

処理時間の合計算出方法

Yuki21
Tera Expert

繰り返し処理の中で処理時間の合計を算出したい箇所があります。
resultの属性は文字列であるため、whileの中で加算することができず、
この要件を満たすにはスクリプトをどのようにすればよいでしょうか?
parseInt()もだめでした。

while (XXX != null) {
    var timer = new OCTimer();
    timer.start("test");
    ・
    ・
    ・
    timer.stop('test');
    var result = timer.result();
    gs.info(result);
    ・
    ・
    ・
}
1 件の受理された解決策

t_sadahisa
Giga Guru

2通り案を出させていただきます。
(言うまでもないですが他にも良い方法はあるかと思います。)

方法1. 測定したい期間で別のタイマーを動作させる。

var timer = new OCTimer();

for (var i=1; i<10; i++){
    timer.start("test"+i);
    gs.sleep(1000);
    timer.stop("test"+i);
}
var result = timer.result();
gs.info(result);

//実行結果
*** Script: DEFAULT Performance Timings
01.000 test1 invoked: 1
01.000 test2 invoked: 1
01.000 test3 invoked: 1
01.000 test4 invoked: 1
01.000 test5 invoked: 1
01.000 test6 invoked: 1
01.001 test7 invoked: 1
01.000 test8 invoked: 1
01.000 test9 invoked: 1
09.001 [TOTAL] for: DEFAULT Performance Timings

 

方法2. GlideDateTimeで現在時刻を取得し、Array等に保持する

//サンプルコード
var time = [];

for (var i=1; i<10; i++){
    time.push(new GlideDateTime().getNumericValue());
    gs.sleep(1000);
}

gs.info("totalTime:" + (time[time.length - 1] - time[0]));

gs.info("laptime");

for (var j=1; j<time.length; j++){
    gs.info(j + ":" + (time[j]-time[j-1]));
}

//実行結果
*** Script: totalTime:8002
*** Script: laptime
*** Script: 1:1001
*** Script: 2:1000
*** Script: 3:1000
*** Script: 4:1000
*** Script: 5:1000
*** Script: 6:1001
*** Script: 7:1000
*** Script: 8:1000

ご質問に対する回答になっているでしょうか。ご確認よろしくお願いいたします。

元の投稿で解決策を見る

5件の返信5

t_sadahisa
Giga Guru

2通り案を出させていただきます。
(言うまでもないですが他にも良い方法はあるかと思います。)

方法1. 測定したい期間で別のタイマーを動作させる。

var timer = new OCTimer();

for (var i=1; i<10; i++){
    timer.start("test"+i);
    gs.sleep(1000);
    timer.stop("test"+i);
}
var result = timer.result();
gs.info(result);

//実行結果
*** Script: DEFAULT Performance Timings
01.000 test1 invoked: 1
01.000 test2 invoked: 1
01.000 test3 invoked: 1
01.000 test4 invoked: 1
01.000 test5 invoked: 1
01.000 test6 invoked: 1
01.001 test7 invoked: 1
01.000 test8 invoked: 1
01.000 test9 invoked: 1
09.001 [TOTAL] for: DEFAULT Performance Timings

 

方法2. GlideDateTimeで現在時刻を取得し、Array等に保持する

//サンプルコード
var time = [];

for (var i=1; i<10; i++){
    time.push(new GlideDateTime().getNumericValue());
    gs.sleep(1000);
}

gs.info("totalTime:" + (time[time.length - 1] - time[0]));

gs.info("laptime");

for (var j=1; j<time.length; j++){
    gs.info(j + ":" + (time[j]-time[j-1]));
}

//実行結果
*** Script: totalTime:8002
*** Script: laptime
*** Script: 1:1001
*** Script: 2:1000
*** Script: 3:1000
*** Script: 4:1000
*** Script: 5:1000
*** Script: 6:1001
*** Script: 7:1000
*** Script: 8:1000

ご質問に対する回答になっているでしょうか。ご確認よろしくお願いいたします。