期間を測定する
コードの実行時間を測定します。
「期間を測定する」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLua Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Lua Academyコースには全4レッスンが含まれています。
コードの実行時間を測る
ファイルの読み込み、ループの実行、レベルの構築など、タスクにかかった時間を知りたいことがあります。処理時間を測定すると、遅い箇所を見つけて改善できます。
Luaには、このためのツールが2つあります。大まかな時間計測にはos.time、高精度な時間計測にはos.clockを使います。
ストップウォッチのパターン
基本的な考え方は簡単です。処理の前に時刻を記録し、処理を実行してから、もう一度時刻を記録して差を求めます。
その差が経過時間です。この開始と停止のパターンが、あらゆるタイマーの基本になっています。
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)os.timeは大まかな計測
os.timeは整数の秒数を扱うため、1秒未満の処理を測定できません。短い間隔で2回呼び出すと、差が0になることがよくあります。
短い処理には、より精度の高い時計が必要です。そこでos.clockを使います。
local a = os.time()
local b = os.time()
print(b - a)os.clockを使う
os.clock()は秒数を返しますが、小数を含む数値として返します。プログラムが使用したCPU時間を高い精度で測定できます。
そのため、1秒未満の短い処理の時間を高精度に測るのに適しています。
print(os.clock())ループの時間を測る
ループを2回のos.clockの呼び出しで挟むと、ループの実行時間を確認できます。その差が秒単位の経過時間です。
大きなループほど時間がかかるため、実装方法を比較する簡単な手段になります。
local t1 = os.clock()
local sum = 0
for i = 1, 1000000 do sum = sum + i end
local t2 = os.clock()
print("Took", t2 - t1, "seconds")結果を整形する
小数点以下の桁数が多い数値は読みにくいため、string.formatを使って表示する桁数を整えます。
ここでの%.3fは小数点以下3桁を表示し、ミリ秒レベルの詳細さで時間を確認できます。
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.timeとos.clockの比較
適切なツールを選びましょう。「ユーザーがログインしてから何秒経過したか」のような現実の時間の経過にはos.timeを使います。
コードの性能測定にはos.clockを使います。こちらは精度が高く、実際の時計の時間ではなくCPU時間を測定するためです。
再利用可能なタイマー関数
このパターンを関数にまとめることができます。指定した関数を実行し、その時間を測定して結果を表示します。
これにより、時間計測の処理を1か所にまとめ、簡単に再利用できます。
local function timeIt(fn)
local s = os.clock()
fn()
print(string.format("%.4f s", os.clock() - s))
end
timeIt(function() for i=1,100000 do end end)時間単位で差を求める
現実の長い時間差には、2つのos.timeの値に対してos.difftimeを使うのが分かりやすい方法です。時間差が秒単位で返されます。
分で表示するには60で、時間で表示するには3600で割ります。
local started = os.time({year=2025, month=1, day=1, hour=9})
local ended = os.time({year=2025, month=1, day=1, hour=17})
local hours = os.difftime(ended, started) / 3600
print(hours, "hours")分と秒を表示する
経過時間を分と秒で表示するには、整数除算と剰余演算子を使います。
//は整数の分を、%は分に含まれない残りの秒数を求めます。
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))シンプルなカウントダウン計算
ここまでの考え方を組み合わせて、残り時間を表示します。目標時刻から現在時刻を引き、秒数を分と秒に整形します。
これにより、見やすいカウントダウン表示を作成できます。
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))確認問題
高精度な時間計測に最適なツールを選びましょう。
まとめ
経過時間を測るには、前後の時刻を読み取り、その差を求めます。整数秒単位の現実の時間差にはos.timeを、秒未満のコード実行時間を高精度に測るにはos.clockを使います。
string.formatで結果を整形し、//と%を使って秒数を分と秒に変換します。これらのツールを使えば、ループから勤務時間まで、さまざまな処理の時間を測定できます。
AI チューターと学ぶ Lua — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 40
- レッスン
- 159
よくある質問
「期間を測定する」レッスンは無料ですか?
はい。「期間を測定する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Lua Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Lua Academyコースには全4レッスンが含まれています。
「期間を測定する」で何を学びますか?
コードの実行時間を測定します。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Lua Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLua Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「期間を測定する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLua Academyレッスンでコードを書いて実行できますか?
はい。すべてのLua Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。