Why should I learn Software Performance Engineering (SPE)?
Software Performance Engineering (SPE)—making software run fast or otherwise consume fewer resources, such as time, storage, energy, network bandwidth, etc.—is emerging as a key technology for enabling programmers to enhance application performance in the post-Moore’s Law era. For decades, programmers could rely on Moore’s Law to speed up their applications, if they simply waited for new and faster hardware. But the end of Moore’s Law put an end to the exponential growth in semiconductor performance, which has put pressure on programmers to understand software performance. Unfortunately, most lack the background to do so. Their plight is exacerbated by modern parallel architectures (e.g. multicore CPUs and GPUs) and complicated computing systems whose capabilities can be hard for average programmers to exploit.
According to sources in industry and the national laboratories, graduating students in computer science are largely ignorant of performance-engineering skills. They lack an understanding of performance-engineering methods such as measurement, caching, vectorization, algorithms, profiling, compiler optimization, parallelism, concurrency, and many other techniques that currently are either distributed across university curricula, covered inadequately, or not taught at all. They cannot integrate their knowledge of algorithms, computer architecture, and software, and they have little understanding of theoretical models and foundational principles of performance.
SPE is traditionally used for scientific computing, such as computational physics, chemical engineering, bioinformatics, weather forecasting, healthcare and life sciences. In the post-Moore’s Law era, SPE becomes useful in almost all the application domains where you have lots of data to process. This includes all the IT companies who spend most of their resources on training large machine learning models or managing cloud computing in datacenters. More interestingly, there are also high computational demands in finance and manufacturing. As a performance engineer, if you are interested in finding a job in finance, here is an example of how SPE is used in high-frequency trading (HFT). In manufacturing, SPE is the enabler to simulations for autonomous driving, car crash safety, and airflow over plane wings.