Book Image

Swift High Performance

By : Kostiantyn Koval
Book Image

Swift High Performance

By: Kostiantyn Koval

Overview of this book

Swift is one of the most popular and powerful programming languages for building iOS and Mac OS applications, and continues to evolve with new features and capabilities. Swift is considered a replacement to Objective-C and has performance advantages over Objective-C and Python. Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible, and more fun. Develop Swift and discover best practices that allow you to build solid applications and optimize their performance. First, a few of performance characteristics of Swift will be explained. You will implement new tools available in Swift, including Playgrounds and REPL. These will improve your code efficiency, enable you to analyse Swift code, and enhance performance. Next, the importance of building solid applications using multithreading concurrency and multi-core device architecture is covered, before moving on to best practices and techniques that you should utilize when building high performance applications, such as concurrency and lazy-loading. Finally, you will explore the underlying structure of Swift further, and learn how to disassemble and compile Swift code.
Table of Contents (15 chapters)
Swift High Performance
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Divide and conquer


The best way to achieve good, solid application architecture is to structure code well, create appropriate abstractions, and separate it into components with a single responsibility.

In functional programming it goes even further. The data—and the functions to work on that data—are also separated. The OOP concept of data and methods to work with it are split into two parts. This makes code even more flexible and reusable.

For concurrent code execution it's particularly important to split your code into standalone separate pieces because they can be sent for execution concurrently without blocking each other.

Before we start refactoring the code let's analyze it first. The goal is to identify a component with a single responsibility. I did it and here are those components:

  • In Data: The first part is our input data. In our case it is a SalesData structure that holds immutable data in our application.

  • Calculation function: The next part is our function that knows how to calculate...