## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > timerate

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

timerate — 記述譜実行時間の校正された性能測定 Calibrated performance measurements of script execution time

### 構文 SYNOPSIS

timerate script ?time? ?max-count?

timerate ?-direct? ?-overhead double? script ?time? ?max-count?

timerate ?-calibrate? ?-direct? script ?time? ?max-count?

### 説明 DESCRIPTION

timerate 命令は､ Tcl 命令や､記述譜scriptの校正された性能の測定を行う｡その記述譜scriptは､性能の評価課程の間多数回実行され得る様に書かれるべきである｡時間は､CPU 時間ではなく､できる限り高分解能の時間測定を使った経過時間で測定される； もし記述譜が OS と対話すると､その対話による消費も含まれる｡この命令は､記述譜や Tcl 命令が如何に良好に遂行されるかの情報を提供するにも使える､又､律速段階の絞込みの補助や応用符の出来栄えの微調整に使用できる｡ The timerate command does calibrated performance measurement of a Tcl command or script, script. The script should be written so that it can be executed multiple times during the performance measurement process. Time is measured in elapsed time using the finest timer resolution as possible, not CPU time; if script interacts with the OS, the cost of that interaction is included. This command may be used to provide information as to how well a script or Tcl command is performing, and can help determine bottlenecks and fine-tune application performance.

第一と第二の書式は､千分の一秒単位で与えられた経過時間 time ､又は指定されていない場合は1000厘秒間(1秒間)､記述譜 script を評価する｡ The first and second form will evaluate script until the interval time given in milliseconds elapses, or for 1000 milliseconds (1 second) if time is not specified.

假引数 max-count は､記述譜評価の反復の最大回数により更なる制限を追加的に課すことができる｡もし max-count が指定されると､この反復の回数に到達するか時間が過ぎると､評価が停止する｡ The parameter max-count could additionally impose a further restriction by the maximal number of iterations to evaluate the script. If max-count is specified, the evalution will stop either this count of iterations is reached or the time is exceeded.

正統な形式の tclリストを返す： It will then return a canonical tcl-list of the form:

    0.095977 µs/# 52095836 # 10419167 #/sec 5000.000 net-ms

それぞれ次のことを指し示す： which indicates:

- 反復に要した時間の平均の量､千分の一秒単位([lindex $result 0]) 　　 the average amount of time required per iteration, in microseconds ([lindex $result 0])

- 何回実行されたかの回数([lindex $result 2]) 　　 the count how many times it was executed ([lindex $result 2])

- 秒あたりの見積り率 ([lindex $result 4]) 　 the estimated rate per second ([lindex $result 4])

- 計測の為の間接費用を除いて見積もられた実際実行時間 ([lindex $result 6]) 　 the estimated real execution time without measurement overhead ([lindex $result 6])

timerate 命令には次の指示項目を与えることができる： 　 The following options may be supplied to the timerate command:

-calibrate
  非常に速い記述譜を可能な限り正確に測定する為に､校正課程が要求され得る｡ -calibrate指示項目は､timerate命令そのものを校正する為に使われ､timerate命令の将来の起動時の間接費用時間の省略時設定とする為に､与えられた記述譜の､見積もられた間接費用を計算する｡もし time 假引数が指定されてない場合､校正手続き函数は 10 秒迄実行される｡ To measure very fast scripts as exactly as possible, a calibration process may be required. The -calibrate option is used to calibrate timerate itself, calculating the estimated overhead of the given script as the default overhead for future invocations of the timerate command. If the time parameter is not specified, the calibrate procedure runs for up to 10 seconds.

  注意すべきは､校正は現在の実装では時分割処理には安全ではない｡ Note that calibration is not thread safe in the current implementation.

-overhead double
  -overhead 假引数は､試験された記述譜のそれぞれの反復の間接費用の測定見積(千分の一秒単位)を供与する｡ 渡された値は､現在のtimerate呼出しの為に､以前の校正によって見積もられた間接費用を上書きする｡上書きは､それ自身､後に示す用例によって図示される様にtimerateを使って測定される｡ The -overhead parameter supplies an estimate (in microseconds) of the measurement overhead of each iteration of the tested script. The passed value overrides, for the current invocation of timerate, the overhead estimated by a previous calibration. Overrides may themselves be measured using timerate as illustrated by a later example.

-direct
  -direct 指示項目は､機械語翻訳なしで､time 命令と似た方法で､供給された記述譜の直接実行を惹き起こす｡それは､正統的リストの呼出しの､及び､バイトで記述された命令の機械語翻訳なしの版の､ Tcl_EvalObjEx の負担の測定に使用できるかもしれない｡ The -direct option causes direct execution of the supplied script, without compilation, in a manner similar to the time command. It can be used to measure the cost of Tcl_EvalObjEx, of the invocation of canonical lists, and of the uncompiled versions of bytecoded commands.

試験される記述譜を固定した回数反復実行する time 命令とは反対に､timerate は固定された時間に実行する｡更に､もし -direct 指示項目が指定されていないと､恰も記述譜が機械語翻訳された手続き函数の一部であるかのように､記述譜の機械語翻訳された変異形が全体の測定の間使用される｡固定された時間の期間､及び怖らく機械語翻訳が､更に正確な結果を許容し､ 遅い記述譜による非常に長い実行時間を阻むことにより､記述譜の高い不確実性を伴う実行時間の測定を実用化する｡ As opposed to the time commmand, which runs the tested script for a fixed number of iterations, the timerate command runs it for a fixed time. Additionally, the compiled variant of the script will be used during the entire measurement, as if the script were part of a compiled procedure, if the -direct option is not specified. The fixed time period and possibility of compilation allow for more precise results and prevent very long execution times by slow scripts, making it practical for measuring scripts with highly uncertain execution times.

### 用例 EXAMPLES

単純な Tcl の for 繰返し(変数 i 上の操作を含む)で､十迄数えること､が如何に速いかを見積もる： Estimate how fast it takes for a simple Tcl for loop (including operations on variable i) to count to ten:

    # 校正
    # calibrate
    timerate -calibrate {}

    # 測定   # measure
    timerate { for {set i 0} {$i<10} {incr i} {} } 5000

繰返しを管理する変数の測定の余剰を無視して､単純な Tcl の for 繰返しが如何に速いかを見積もる： Estimate how fast it takes for a simple Tcl for loop, ignoring the overhead of the management of the variable that controls the loop:

    # 変数操作の余剰を校正する
    # calibrate for overhead of variable operations
    set i 0; timerate -calibrate {expr {$i<10}; incr i} 1000

    # 測定  # measure
    timerate {
        for {set i 0} {$i<10} {incr i} {}
    } 5000

clock format のみを使用して一日の時間を計算する速度を見積もる､但し､それを計算する為に準備する記述譜の部位の余剰を無視する： Estimate the speed of calculating the hour of the day using clock format only, ignoring overhead of the portion of the script that prepares the time for it to calculate:

    # 校正  # calibrate
    timerate -calibrate {}

    # 間接費用を見積もる   # estimate overhead
    set tm 0
    set ovh [lindex [timerate -overhead 0 {
        incr tm [expr {24*60*60}]
    }] 0]

    # 見積もられた間接費用を使って測定する
    # measure using estimated overhead
    set tm 0
    timerate -overhead $ovh {
        clock format $tm -format %H
        incr tm [expr {24*60*60}]; # overhead for this is ignored
    } 5000

この最後の用例の中で､註意すべきは間接費用自身は-overhead 0を伴って起動されたtimerateを使って測定される｡ これは､明示的な間接費用は､絶対的な値と仮定され､且つ､無為設定の校正された間接費用を越える増加ではない､との理由で必要である｡ 従って､校正された間接費用は､間接費用自身の測定の中で除外さることが重要である｡ これは､間接費用の測定時に-overhead 0を渡すことにより達成される｡ In this last example, note that the overhead itself is measured using timerate invoked with -overhead 0. This is necessary because explicit overheads are assumed to be absolute values, and not an increment over the default calibrated overhead. It is therefore important that the calibrated overhead is excluded in the measurement of the overhead value itself. This is accomplished by passing -overhead 0 when measuring the overhead.

### SEE ALSO

time

### KEYWORDS

performance measurement, script, time
Copyright © 2005 Sergey Brester aka sebres.