2017-08-02 5 views
0

ブール値またはnil比較は高速ですか?私は次のように私はクラスを持っスウィフトのコードを書いています

class Note 
{ 
    var isDeleted:Bool = false 
    var deletedDateTime:Date! 
} 

はノートで満たされ、私は比較に基づいてフィルタを作成したい場合、私はどちらかができているデータソースがあるとisDeletedと比較するか、deletedDateTimeと比較することができます。次の2つのステートメントからどちらが速くなるでしょうか:

var dataSource:[Note] = [Note]() 
// fill the datasource with objects 

dataSource.filter({$0.isDeleted == false})  // 1 
dataSource.filter({$0.deletedDateTime == nil}) //2 

誰でも私を導くことができますか?

+0

私はどちらかをチェックすることで巨大な時間差が生じないと信じています –

+0

大きな違いがあるのではないかと疑いますが、あなたは何を測定しましたか? –

+0

最下位レベルでは、両方とも値をロードし、ゼロであるかどうかをチェックします。実行時間に差がある場合は、ナノ秒のオーダーになるでしょう。ここではマイクロ最適化について心配するのではなく、可能な限りコードを明確にすることに集中してください。 'boolean'値はより明示的です:' isDeleted'をテストすることは、あなたがしていることを明確に示します。存在しない 'deletedDateTime'のチェックは間接です。それは明らかではない。良い妥協点は、 'boolean'値を取り除き、' isDeleted'プロパティを持つことです。 –

答えて

0

実行時間について話している場合は、時間差はほとんどありません。しかし、あなたのクラスは、あなたが両方の意味を同じように尋ねたので、不要なブール変数を取り除くことができるので、少しはっきりしているようです。

+0

"時間差はあまりありません。"実際、時差はありません。ビット比較に要する時間と、64ビットワード比較に要する時間とは関係がありません。どちらも同じサイクル数を必要とします。 – TheBasicMind

関連する問題