Skip to content

Performance Optimization

Konrad Feiler edited this page Jul 31, 2017 · 2 revisions

xcodebuild -project Example/Pods/Pods.xcodeproj/ -scheme KDTree-iOS clean build OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | grep "[0-9][0-9].[0-9]*ms" | sort -nr > culprits.txt

Welcome to the KDTree wiki!

To check whether a new method takes particularly long to compile run:

xcodebuild -project Example/Pods/Pods.xcodeproj/ -scheme KDTree-iOS clean build OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | grep "[0-9][0-9]\.[0-9]*ms" | sort -nr > culprits.txt

Current Situation [4.0 Ghz core iMac]:

  • 71.99ms /Users/konrad/KDTree/Pod/Classes/KDTree.swift:20:12 public init(values: [Element], depth: Int = default)
  • 63.20ms /Users/konrad/KDTree/Pod/Classes/KDTree.swift:20:12 public init(values: [Element], depth: Int = default)
  • 46.26ms /Users/konrad/KDTree/Pod/Classes/KDTree+RangeSearch.swift:12:22 fileprivate func fitsIn(_ intervals: [(Double, Double)]) -> Bool
  • 43.89ms /Users/konrad/KDTree/Pod/Classes/KDTree+RangeSearch.swift:12:22 fileprivate func fitsIn(_ intervals: [(Double, Double)]) -> Bool
  • 37.63ms /Users/konrad/KDTree/Pod/Classes/KDTree+RangeSearch.swift:14:73 (closure)
  • 35.37ms /Users/konrad/KDTree/Pod/Classes/KDTree+RangeSearch.swift:14:73 (closure)
  • 32.47ms /Users/konrad/KDTree/Pod/Classes/KDTree+CustomStringConvertible.swift:14:36 get {}
  • 25.15ms /Users/konrad/KDTree/Pod/Classes/KDTree+CustomStringConvertible.swift:14:36 get {}
  • 15.60ms /Users/konrad/KDTree/Pod/Classes/CGPoint+KDTreePoint.swift:14:17 public func kdDimension(_ dimension: Int) -> Double
  • 15.46ms /Users/konrad/KDTree/Pod/Classes/CGPoint+KDTreePoint.swift:14:17 public func kdDimension(_ dimension: Int) -> Double
  • 14.05ms /Users/konrad/KDTree/Pod/Classes/KDTree+Sequence.swift:13:17 public func makeIterator() -> AnyIterator
  • 13.18ms /Users/konrad/KDTree/Pod/Classes/KDTree+Sequence.swift:21:32 (closure)
  • 12.81ms /Users/konrad/KDTree/Pod/Classes/KDTree+NearestNeighbour.swift:25:22 fileprivate func nearest(toElement searchElement: Element, bestValue: Element?, bestDistance: Double) -> (bestValue: Element?, bestDistance: Double)
  • 12.70ms /Users/konrad/KDTree/Pod/Classes/KDTree+NearestNeighbour.swift:25:22 fileprivate func nearest(toElement searchElement: Element, bestValue: Element?, bestDistance: Double) -> (bestValue: Element?, bestDistance: Double)
  • 10.24ms /Users/konrad/KDTree/Pod/Classes/KDTree.swift:153:18 private func findBestReplacement(_ dimOfCut: Int, direction: ReplacementDirection) -> (KDTree, Element?) [ Commit: https://github.com/Bersaelor/KDTree/commit/4f10cd5a3348cc309f0a0681ae0f9a662557dd1d ]

Clone this wiki locally