概要 anchor.png Edit

2つの処理を、どちらが高速かベンチマークして比較する。

Page Top

ポイント anchor.png Edit

std.datetimeにある、comparingBenchmarkというテンプレート関数を使用します。

サンプルコードの例は、平均値の計算を、lrint関数を使用する処理と、0.5加算して小数点以下の切り捨てを行う処理の2つがどちらがより高速かを計測します。

Page Top

サンプルコード anchor.png Edit

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 
 
 
-
|
|
|
-
|
!
-
|
!
|
|
|
|
!
import std.stdio, std.math, std.datetime;
 
void main(string[] args)
{
    double a = 100.46;
    int c;
    auto result = comparingBenchmark!(
    {
        c += cast(int)lrint(a);
    },
    {
        c += cast(int)(a + 0.5);
    })();
    
    writeln(result.point);
    writefln("base: %dus", result.baseTime.usecs);
    writefln("target: %dus", result.targetTime.usecs);
}
Page Top

実行結果 anchor.png Edit

1
2
3
4
$ dmd -run main
1.53947
base: 100us
target: 64us

1つ目(base)に指定した「lrintを使う処理」より、1.53947倍、2つ目(target)に指定した「0.5加算して小数点以下の切り捨てを行う処理」が高速に動作するという結果になりました。


Page Top

投票とコメント anchor.png Edit

Choices Vote
大変参考になった1  
参考になった0  
あまり参考にならなかった0  
まったく参考にならなかった0  

No comment. コメント​/SampleCodes​/Phobos​/時間計測​/2Edit

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 916, today: 1, yesterday: 1
Princeps date: 2012-08-19 (Sun) 02:47:19
Last-modified: 2012-08-19 (Sun) 02:47:19 (JST) (3389d) by ゲスト
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu