Какой код «Подсчета високосных годов» работает быстрее? - PullRequest
0 голосов
/ 16 января 2020

во время практики кодирования я только что задался вопросом: какой код будет быстрее обрабатываться в swift?

Этот код быстрее:

var aYear =  Int(readLine()!)! 

func isLeap(year: Int) 
{
  if aYear%400 == 0
  {
    print("YES")
  }
  else if aYear%4 == 0 && !(aYear%100 == 0)
  {
    print("YES")
  }
  else
  {
    print("NO")
  }  
}
isLeap(year: aYear) 

Или этот быстрее?

var aYear =  Int(readLine()!)!

func isLeap(year: Int) {

    var leap = "NO"

    if year % 4 == 0 {
        leap = "YES"
    }
    if year % 100 == 0 {
        leap = "NO"
    }
    if year % 400 == 0 {
        leap = "YES"
    }
    print(leap)
}
isLeap(year: aYear)

Спасибо. Хорошего дня:)

1 Ответ

1 голос
/ 16 января 2020

Одним из способов проверки производительности функции является использование этой вспомогательной структуры. Добавьте в свой проект следующее:

struct Benchmark {
    static func testElapsedTimeFor(_ title: String, operation: @escaping ()->()) {
        let startTime = CFAbsoluteTimeGetCurrent()
        operation()
        let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
        print("Time elapsed for \(title): \(timeElapsed) s.")
    }

    // If you would like to get the double instead
    static func testElapsedTimeFor(operation: @escaping ()->()) -> Double {
        let startTime = CFAbsoluteTimeGetCurrent()
        operation()
        let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
        return Double(timeElapsed)
    }
}

И используйте его так:

Benchmark.testElapsedTimeFor("First Function") {
    self.isLeap(year: 2019)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...