def foo10() {
local i,n,keys;
sm1(" set_timer ");
n = Length(Helplist);
keys = [" " ]; /* This is a gate keeper for shell. */
PSfor (i=0; i< n; i++ ) {
keys = Append(keys,Helplist[i,0]);
}
sm1(" set_timer ");
sm1(" set_timer ");
keys = sm1(keys," shell ");
sm1(" set_timer ");
}
def foo20() {
local i,n,keys;
sm1(" set_timer ");
n = Length(Helplist);
keys = [" " ]; /* This is a gate keeper for shell. */
PSfor (i=0; i< n; i++ ) {
keys = dummyf(keys,Helplist[i,0]);
}
sm1(" set_timer ");
}
def dummyf(a,b) {
;
}
/* 1997, 6/1 (日曜日)
n = 68
In[13]=foo10();
User time: 0.866667 seconds, System time: 0.000000 seconds
User time: 0.766667 seconds, System time: 0.000000 seconds: shell sort の時間
In[14]=foo20();
User time: 0.633333 seconds, System time: 0.000000 seconds
foo10 と foo20 では, 0.2 秒程度の差しかない.
したがって, append では, Helplist[i,0] の取り出しと,
局所変数の処理にほとんどの時間が使われていると予想できる.
*/
def foo30() {
local i,n,keys;
sm1(" set_timer ");
n = Length(Helplist);
keys = [" " ]; /* This is a gate keeper for shell. */
PSfor (i=0; i< n; i++ ) {
keys = dummyf(keys,i); /* 配列要素のとりだしなし */
}
sm1(" set_timer ");
}
/* foo30() は, 0.48 秒. よって, 配列要素の取り出しに, 0.2 秒程度かかっている.
*/
def foo40() {
local i,n,keys;
n = Length(Helplist);
keys = [" " ]; /* This is a gate keeper for shell. */
sm1(" set_timer ");
PSfor (i=0; i< n; i++ ) {
keys = dummyf(keys,i); /* 配列要素のとりだしなし */
}
sm1(" set_timer ");
}
/* これは, 0.46 秒. Length の計算は, 0.02 秒 */
/* 関数呼び出しは, 0.5 秒, 配列要素の取り出しが, 0.2秒 */