Timestamp
1. 概要
Timestamp は、ソースシーケンスの各要素に現在のタイムスタンプ(ticks)を付加するオペレーターです。TimeProvider.GetTimestamp() から取得した ticks 値と元の値のタプル (long Ticks, T Value) を発行します。
各値の到着時刻を記録したい場合(ログ出力やパフォーマンス計測など)に使用します。
2. シグネチャ
デフォルト TimeProvider によるタイムスタンプ付加
csharp
public static Observable<ValueTuple<long, T>> Timestamp<T>(
this Observable<T> source)デフォルトの TimeProvider を使用して、各要素にタイムスタンプを付加します。
csharp
source.Timestamp()TimeProvider 指定によるタイムスタンプ付加
csharp
public static Observable<ValueTuple<long, T>> Timestamp<T>(
this Observable<T> source,
TimeProvider timeProvider)指定した TimeProvider を使用してタイムスタンプを取得します。テスト時に FakeTimeProvider を使用可能です。
csharp
source.Timestamp(fakeTimeProvider)overload の使い分け
| overload | 使う場面 |
|---|---|
| 引数なし | 通常のタイムスタンプ付加 |
TimeProvider | ユニットテストで時間を制御したい場合 |
3. マーブルダイアグラム
各要素に到着時点のタイムスタンプ(ticks)が付加されます。元の値はタプルの第 2 要素としてそのまま保持されます。
4. サンプルコード
csharp
using R3;
// 各値にタイムスタンプを付けてログ出力
source
.Timestamp()
.Subscribe(item =>
{
var (ticks, value) = item;
Console.WriteLine($"[{ticks}] 値: {value}");
});
// TimeProvider を指定して使用
source
.Timestamp(TimeProvider.System)
.Subscribe(item =>
{
var (ticks, value) = item;
Console.WriteLine($"[{ticks}] 値: {value}");
});5. 補足
TimeInterval との違い
| オペレーター | 付加する値 | 型 |
|---|---|---|
| Timestamp | 各値の到着時刻(ticks) | (long, T) |
| TimeInterval | 前回の値からの経過時間 | (TimeSpan, T) |
Timestamp は絶対的な時刻情報を付加するのに対し、TimeInterval は相対的な経過時間を付加します。用途に応じて使い分けてください。
フレームベースの類似オペレーターとして FrameCount があります。