NSDateFormatter расход - PullRequest
       74

NSDateFormatter расход

0 голосов
/ 03 февраля 2020

Сколько стоит создание / модификация DateFormatters? Дешевле ли создавать 4 немного разных DateFormatters или модифицировать один DateFormatter?

Я смутно помню, что модификация DateFormatters была такой же дорогой, как модификация GL Context (то есть: очень).

Существует устаревшее обсуждение по теме Почему выделение или инициализация NSDateFormatter считается "дорогим"?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020
func testPerformanceExampleUpdateFormat() {
    self.measure {
        (0...1_000).forEach { _ in
            let df = DateFormatter()
            df.dateFormat = "MMM yyyy"
            let formattedDate1 = df.string(from: Date())
            df.dateFormat = "MM/dd/yyyy"
            let formattedDate2 = df.string(from: Date())
        }
    }
}

func testPerformanceExampleNewInstance() {
    self.measure {
        (0...1_000).forEach { _ in
            let df1 = DateFormatter()
            df1.dateFormat = "MMM yyyy"
            let df2 = DateFormatter()
            df2.dateFormat = "MM/dd/yyyy"
            let formattedDate1 = df1.string(from: Date())
            let formattedDate2 = df2.string(from: Date())
        }
    }
}
  • Время результата при обновлении формата 1000 раз: 0,0896 с.

  • Время результата при создании нового экземпляра 1000 раз: 0,138 с .

Насколько дорог тип?

func testPerformanceExample() {
    self.measure {
                    (0...1_000).forEach { _ in
            let int = DateFormatter()
        }
    }
}

Время результата составляет 0,0017 с. для 1000 экземпляров DateFormat

Давайте сравним его с другими типами:

0,000883 с. за 1 000 экземпляров Int; // let int = 2

0.000814 с. за 1 000 экземпляров String; // let str = String ("Hello")

0,00118 с. за 1 000 экземпляров даты; // let date = Date ()

0,0784 с. для 1000 экземпляров UITableViewController; let v c = UITableViewController ()

0,246 с. для 1000 экземпляров UITableView; // let tv = UITableView ()

Это дорого?

1 голос
/ 03 февраля 2020

Недостатком NSDateFormatter является стоимость создания нового экземпляра или установки формата и локали. На самом деле эти действия являются одними из самых медленных операций в iOS SDK, и вы действительно должны их избегать. Прочтите эту статью, чтобы узнать больше о дорогих объектах, таких как NSDateFormatter

...