ProductPromotion
Logo

Swift

made by https://0x3d.site

GitHub - SwiftStudies/Duration: A simple Swift package for measuring and reporting the time taken for operations
A simple Swift package for measuring and reporting the time taken for operations - SwiftStudies/Duration
Visit Site

GitHub - SwiftStudies/Duration: A simple Swift package for measuring and reporting the time taken for operations

GitHub - SwiftStudies/Duration: A simple Swift package for measuring and reporting the time taken for operations

Build Status

Duration

A simple Swift package for measuring and reporting the time taken for operations. It is derived from a version for Playgrounds that I blogged about some time ago, but kept needing to use in various projects.

License

Duration is distributed under the Apache 2.0 license

Usage

Duration supports iOS, OS X, tvOS, and Linux.

Installation

Install via the Swift Package Manager

Add the following to your Package.swift

	.Package(url: "https://github.com/SwiftStudies/Duration.git", majorVersion: 1)

Simple Measurements

There are two methods for simple timing measurements. You can insert calls before and after the section of code you wish to measure, for example

	Duration.startMeasurement("Tough Math")
	
	yourToughMathStuff()
	
	Duration.stopMeasurement()

Or you can use a block

	Duration.measure("Tough Math"){
		yourToughMathStuff()
	}

Or even

	Duration.measure("Tough Math", block: yourToughMathStuff)

In all cases (by default) you will get the output (assuming it took 243 milliseconds)

Tough Math took: 243ms

If measurements are nested, they will be appropriately indented in the output, for example if yourToughMath() made a measurement of part of its code you would see

Measuring Tough Math:
	Part 1 took: 100ms
	Part 2 took: 143ms
Tough Math took: 243ms

Understanding Performance Deviations

In order to better understand how your code is impacted by other things the system is doing you can get average times and standard deviations for block based measurements by supplying a number of iterations for the block, so

	Duration.measure("Tough Math", iterations: 10, forBlock:myToughMath)

Would run the block 10 times, taking and reporting the 10 individual measurements and then the average time taken for the block, together with the standard deviation

Measuring Tough Math
	Iteration 1 took: 243ms
	Iteration 2 took: 242ms
	...
	Iteration 10 took: 243ms
Tough Math Average: 243ms
Tough Math STD Dev.: 1ms

Stopping Report Generation

Because you may want to stop reporting of measurements in release builds, you can set the logStyle variable in order to control the logging behavior

	Duration.logStyle = .None

Will disable measurement logging. In the future I will extend this library to support logging to a data-structure for subsequent analysis, but at this point there are two valid values .None and .Print

If you are using Duration within a Package of your own that you are distributing, rather than just over-writing the log style, you can push your desired style, then pop it to restore it to what a consuming package would want. For example

	public func myMethod(){
		//Because this is a release of your package
		//don't log measurements
		pushLogStyle(.None)
		
		// Do stuff that is instrumented
		
		//Restore the logging style to whatever it was
		//before
		popLogStyle()
	}

Reporting Issues

Please report issues using GitHub's standard system

More Resources
to explore the angular.

mail [email protected] to add your project or resources here ๐Ÿ”ฅ.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here ๐Ÿ”.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory