<function>
or <operator>
).
This is just notation, and the symbols <
and >
should not be misconstrued as Julia's syntax.
Action | Keyboard Shortcut |
---|---|
Previous Section | Ctrl + 🠘 |
Next Section | Ctrl + 🠚 |
List of Sections | Ctrl + z |
List of Subsections | Ctrl + x |
Close Any Popped Up Window (like this one) | Esc |
Open All Codes and Outputs in a Post | Alt + 🠛 |
Close All Codes and Outputs in a Post | Alt + 🠙 |
Unit | Acronym | Measure in Seconds |
---|---|---|
Seconds | s | 1 |
Milliseconds | ms | 10-3 |
Microseconds | μs | 10-6 |
Nanoseconds | ns | 10-9 |
The first part of this website has covered core programming tools such as functions, conditions, and for-loops. Furthermore, we've introduced fundamental data types, such as scalars, vectors, and tuples. These concepts are present in all languages, and we have yet to explore some of Julia's most distinctive features. The second part of the book does this, by delving into one area that makes Julia an ideal choice for scientific computation: high performance.
The realm of high-performance computing is vast and complex. Moreover, each subject has specificities that turn some optimizations more or less relevant. In this context, I've made deliberate choices about what to include and exclude, prioritizing what I consider the essentials for performance: type stability and reductions in memory allocations. The former in particular is essentially a prerequisite to achieve high performance in Julia, making it necessary for further optimizations.
To develop these concepts, the upcoming initial chapter provides some background knowledge. The challenge in this respect lies in striking the right balance between providing sufficient context and avoiding unnecessary specialization. For guiding my decisions, I've set the goal of equipping readers with practical knowledge of optimization techniques, without overwhelming them with excessive detail.
With this in mind, I left out some valuable concepts of Julia's type system. In particular, I won't cover the concept of struct
, which allows the user to create its own custom objects. The reason for this is twofold. First, while important for writing projects, the subject isn't directly related to high performance. Second, the section on types is already long enough. Adding more concepts might divert the reader's attention away from the primary focus, which is high-performance techniques.