[解決済み] Swiftで経過時間を計測する
2022-04-28 23:32:22
質問
Swift で関数を実行したときの経過時間を測定するにはどうしたらよいでしょうか。私はこのように経過時間を表示しようとしています: "経過時間は0.05秒です"。それを見て Javaでは これを達成するために、Swiftで利用可能な同等のメソッドはありますか?
サンプルプログラムをご覧ください。
func isPrime(_ number: Int) -> Bool {
var i = 0;
for i=2; i<number; i++ {
if number % i == 0, i != 0 {
return false
}
}
return true
}
var number = 5915587277
if isPrime(number) {
print("Prime number")
} else {
print("NOT a prime number")
}
解決方法は?
を測定するために書いたSwiftの関数がこちらです。 プロジェクト・オイラー の問題をSwiftで解決します。
Swift 3 では、Grand Central Dispatch に "swiftified" というバージョンが追加されました。ですから、正しい答えは、おそらく DispatchTime API .
私の関数は次のようなものです。
// Swift 3
func evaluateProblem(problemNumber: Int, problemBlock: () -> Int) -> Answer
{
print("Evaluating problem \(problemNumber)")
let start = DispatchTime.now() // <<<<<<<<<< Start time
let myGuess = problemBlock()
let end = DispatchTime.now() // <<<<<<<<<< end time
let theAnswer = self.checkAnswer(answerNum: "\(problemNumber)", guess: myGuess)
let nanoTime = end.uptimeNanoseconds - start.uptimeNanoseconds // <<<<< Difference in nano seconds (UInt64)
let timeInterval = Double(nanoTime) / 1_000_000_000 // Technically could overflow for long running tests
print("Time to evaluate problem \(problemNumber): \(timeInterval) seconds")
return theAnswer
}
古い回答
Swift 1 と 2 では、私の関数は NSDate を使用します。
// Swift 1
func evaluateProblem(problemNumber: Int, problemBlock: () -> Int) -> Answer
{
println("Evaluating problem \(problemNumber)")
let start = NSDate() // <<<<<<<<<< Start time
let myGuess = problemBlock()
let end = NSDate() // <<<<<<<<<< end time
let theAnswer = self.checkAnswer(answerNum: "\(problemNumber)", guess: myGuess)
let timeInterval: Double = end.timeIntervalSinceDate(start) // <<<<< Difference in seconds (double)
println("Time to evaluate problem \(problemNumber): \(timeInterval) seconds")
return theAnswer
}
<サブ NSdateをタイミング関数に使用することは推奨されないことに注意してください: " 外部時刻参照との同期や、ユーザーによる明示的な時刻変更により、システム時刻が減少する可能性があります。 "。
関連
-
[解決済み] swift 3 エラー。引数ラベル '(_:)' は利用可能なオーバーロードに一致しません。
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] C#で相対時間を計算する
-
[解決済み] JavaScriptでUnixのタイムスタンプを時刻に変換する
-
[解決済み] Pythonプログラムの実行時間を取得するにはどうしたらいいですか?
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift: print() vs println() vs NSLog()
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] これを解決するにはどうしたらいいのでしょうか。UILabel.textは、メインスレッドからのみ使用する必要があります。
-
[解決済み] 型の不変値に変異型メンバを使用することはできません。
-
[解決済み] swiftにおけるconvenience initとinitの違いは何ですか、より良い明示的な例
-
[解決済み] なぜクラスではなくストラクチャーを選ぶのか?
-
[解決済み] Javaで経過時間を計測するには?[重複しています]
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み】weak referenceとunowned referenceの違いは何ですか?
-
[解決済み】Swiftの構造体のために、メンバーごとの初期化子をデフォルトで公開するにはどうすればよいですか?
-
[解決済み】Swiftのenumのカウントを取得する方法は?
-
[解決済み】Xcode 8 Beta 3 Legacy Swiftを使用する問題