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

Value objects and reference objects


In the previous chapter, you learned the benefits of using immutable value objects. Value objects not only make code safer and clearer, they also make it faster. Value objects have better speed performance than reference objects and here is why. As an example of a value object, we will use structures in this chapter.

Memory allocation

Value objects can be allocated on the stack memory instead of the heap memory. Reference objects need to be allocated on the heap memory because they can be shared between many owners. Because value objects have only one owner they can be safely allocated on the stack. Stack memory is way faster that heap memory.

The second advantage is that value objects don't need reference counting memory management. As they can have only one owner, there is no such thing as reference counting for value objects. With ARC (Automatic Reference Counting), we don't need to think so much about memory management and it mostly looks transparent...