2009-07-04 1 views
9

システム時間の機能時間(0)は1秒の解像度を与えます。iPhoneで1秒より細かいシステム時間にアクセスするには

細かい関数がありますか?

私は、2つのイベント間の時間間隔を決定するために使用しています。

コード行が大いに役立ちます。それは、私が公式の文書を見るときにコンセプトを掛けるために何か具体的なものを持つことを容易にします。

+0

+1のように実際のコードを入れてください。ありがとう@ゾウ。 – willc2

+0

聖なる煙、私の質問は、すでに "システム時間(0)"のGoogleの結果に表示されています – willc2

+0

これは重要です:CFAbsoluteTimeGetCurrentから値が返されます:秒単位の倍数ですが、サブミリ秒です。私はAppleのドキュメントがこの点について誤解を招くことがあることを知っています。 – Ant

答えて

17

CFAbsoluteTimeGetCurrentを参照してください:

CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); 
// do something you want to measure 
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); 
NSLog(@"operation took %2.5f seconds", end-start); 

あなたはCFAbsouteTimeがあまりにも冗長見つける必要があり、あなたは単に代わりにdoubleを使用することができます。

+0

文でそれを使用できますか? – willc2

+0

どのようにして1秒未満の間隔が得られますか? – willc2

+0

戻り値は倍精度で、1000を掛けてミリ秒にするか、1を掛けてμsを得るだけです。 – zoul

1

gettimeofday()をお探しですか?それはtime()に類似したサブ秒の解像度タイミングのための主要なPOSIX関数です。

Native App Development for the iPhoneを参照してください。

1
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval 
         target:self selector:@selector(drawView) userInfo:nil 
         repeats:YES]; 

これはOpenGLアプリテンプレートのスニペットです。あなたが高解像度のタイマーを探しているなら、それはおそらくあなたが必要とするものです。

4

NSDatedouble(Appleは言う通り、 "sub-millisecond precision in an 10,000 years")を返すtimeIntervalSinceDate:メソッドを持っています。

NSDate *start = [NSDate date]; 
… 
NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:start]; 
+0

あなたはそれを使って2回の違いを得る方法を知っていますか? – willc2

+1

timeIntervalSince1970を使用して比較します。これは数秒で与えられますが、小数点以下の桁数が多いため、1000を掛けてmsecなどを得ることができます。 –

関連する問題