<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 the website has laid the groundwork for working with Julia. This demanded introducing fundamental data types, such as scalars, vectors, and tuples. Furthermore, we've covered essential programming tools, such as functions, conditional statements, and for-loops. Despite exhibiting variations, all these objects and tools are present across programming languages.
In the second part of the website, we'll turn our attention to one of Julia's most distinctive strengths: high-performance computing. This is one of the salient features that turn Julia an ideal choice for scientific applications.
The domain of high-performance computing is vast and complex. Moreover, each subject has idiosyncratic features that make certain optimizations more or less relevant. Given this breadth, I've made deliberate choices about what to include and exclude. The challenge lied in striking a right balance between providing sufficient context, while avoiding unnecessary specificity.
Considering this inherent trade-off, I've chosen the subjects with the goal of equipping readers with practical knowledge for optimizing code, without overwhelming them with excessive detail. In particular, the primary focus will be on what I consider the essentials for performance in Julia: type stability and reductions in memory allocations. The former in particular constitutes a prerequisite to achieve high performance in Julia, making it necessary for any further optimization.
Instead, some valuable concepts of Julia's type system have been left out. In particular, the concept of struct
, which allows the user to create its own custom objects, won't be covered. There are two reasons for this omission. First, while important for project development, the subject can be bypassed when analyzing high performance, without compromising its understanding. Second, the section on types is already long enough—adding more subjects could divert the reader's attention away from the primary focus, which is learning high-performance techniques.