Code Monkey home page Code Monkey logo

the-art-of-writing-efficient-programs's Introduction

The Art of Writing Efficient Programs

An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples

(一本高级编程指南,使用C++介绍如何高效利用硬件和编译器优化)

  • 作者:Fedor G. Pikus

  • 译者:陈晓伟

  • 首次发布时间:2021年10月22日(来源)

翻译是译者用自己的**,换一种语言,对原作者想法的重新阐释。鉴于我的学识所限,误解和错译在所难免。如果你能买到本书的原版,且有能力阅读英文,请直接去读原文。因为与之相较,我的译文可能根本不值得一读。

— 云风,程序员修炼之道第2版译者

本书概述

掌握各种性能提升技术,如并发性、无锁编程、原子操作、并行性和内存管理。

性能自提升的时代结束了,以前随着CPU的升级,程序本身的速度也在加快,现在情况不一样了。新架构的处理器时钟频率几乎达到了峰值,对现有的程序性能上的改进并不多。虽然处理器的体积更大、性能更强,但这些能力的都在增多的核数和其他的计算单元上消耗掉了。为了编写高效的软件,现在的开发者必须了解如何利用现有的计算资源进行编程,这本书将说明如何做到这一点。

这本书涵盖了编写高效程序的主要方面:高效地使用CPU资源和内存,避免不必要的计算,性能测试,以及如何充分利用并发性和多线程。还会了解编译器优化,以及如何更有效地使用编程语言(C++)。最后,了解设计决策如何对性能产生影响。

读完这本书,可以利用处理器和编译器的知识来编写高效的程序,还能够理解使用这些技术和在提高性能时如何进行测试。而本书的核心在于学习的方法论。

关键特性

  • 了解现代CPU的局限性及对性能的影响
  • 了解如何避免编写效率低下的代码,并使用编译器进行优化
  • 了解编写高性能程序需要权衡策略和成本

内容纲要

  • 了解如何有效地使用程序中的硬件计算资源
  • 理解内存序和内存栅栏之间的关系
  • 熟悉不同数据结构和组织方式对性能的影响
  • 评估并发内存访问对性能的影响,以及如何将影响最小化
  • 了解何时使用和不使用无锁编程技术
  • 探索提高编译器优化效率的不同方法
  • 为避免效率低下的开发,针对并发和高性能数据结构设计API

适读人群

这本书是为有经验的开发人员和程序员编写的,他们从事对性能至关重要的项目,并希望学习不同的技术来提高代码的性能。属于算法交易、游戏、生物信息学、计算基因组学或计算流体动力学社区的开发者,可以从这本书中学习各种技术,并将其应用到他们的工作领域中。

虽然本书使用的是C++语言,但本书的概念可以很容易地转移或应用到其他编译语言,如C、Java、Rust、Go等。

作者简介

Fedor G. Pikus是Mentor Graphics公司(西门子公司)硅设计部门的首席工程科学家。他曾在谷歌担任高级软件工程师,在Mentor Graphics担任Calibre PERC、LVS、DFM的首席软件架构师。1998年,他从计算物理的学术研究转向软件行业,加入Mentor Graphics。Fedor是高性能计算和C++方面公认的专家,他的作品在CPPCon, SD West, DesignCon, Software Development Journal上进行过展示,也是O'Reilly的作者。作为首席科学家,他的职责包括规划Calibre产品的长期技术方向,指导和培训从事这些产品、软件设计和架构的工程师,以及研究新的设计和软件技术。Fedor在物理学、EDA、软件设计和C++语言方面拥有超过25项专利和超过100篇论文和会议报告。

我要感谢我的妻子加林娜(Galina),我的儿子亚伦(Aaron)和本杰明(Benjamin),他们支持和鼓励我,对我信心十足,还有我的猫维尼(Pooh),也会在我需要的时候鼓励我。

—Fedor G. Pikus

审评者介绍

Sergey Gomon在12年前在白俄罗斯国立大学信息和无线电电子学院的人工智能系,开始了他的IT之旅。他在网络编程、信息安全、图像处理等多个领域拥有大约8年使用C++的工业编程经验。他目前在N-able工作,是CoreHard C++社区的活跃成员。

本书相关

the-art-of-writing-efficient-programs's People

Contributors

xiaoweichen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.