エロと風俗情報満載 どう抜く? へ投稿 その2
昨日に引き続き エロと風俗情報満載 どう抜く? へ投稿。
お題は「実行時間の測定」。出題文は以下。
ある比較的重たい処理をする関数「func」があるとします。この関数を呼び出して、その実行にかかった時間を表示する関数「profile」を書いてください。
言語として可能であれば、「profile」が「func」と同じ引数で呼び出せるようにしてください。
で、回答したコードがこれ。
profile: fun(...) { fmt: %f!profile: %d sec!; start: clock(); result: func(...); fmt(clock() - start).p; return result; } func: fun(...) { for (i: 0; i < 1000000; i++) { // heavy processing } } profile("test"); //=>profile: 0.437 sec
0.9.7 から追加された(と思われる) clock() 関数を使って、以下のように実装。
- profile 関数と func 関数が同じ引数を受け取れる。
- func 関数の戻り値を profile 関数の戻り値としている。