0
我寫在斯威夫特一個代碼,我有一個類如下:是布爾還是零比較更快?
class Note
{
var isDeleted:Bool = false
var deletedDateTime:Date!
}
假設有一個充滿Notes中的數據源,我想使基於比較的過濾器,那麼我既可以比較isDeleted
或我可以比較deletedDateTime
。哪一個將從以下兩個報表中更快:
var dataSource:[Note] = [Note]()
// fill the datasource with objects
dataSource.filter({$0.isDeleted == false}) // 1
dataSource.filter({$0.deletedDateTime == nil}) //2
任何人都可以請指導我嗎?
我相信檢查是否會造成巨大的時差 –
我懷疑是否存在顯着差異,但您測量的是什麼? –
在最低級別,加載一個值並檢查它是否爲零。如果執行時間有所不同,它將在納秒左右。不要擔心這裏的微觀優化,而應該集中精力使代碼儘可能清晰。 'boolean'值更加明確:測試'isDeleted'清楚地說明你在做什麼。檢查不存在的'deletedDateTime'是間接的;它並不清楚。一個很好的折衷辦法是消除'boolean'值並擁有'isDeleted'屬性。 –