GithubHelp home page GithubHelp logo

xiaoweichen / the-art-of-writing-efficient-programs Goto Github PK

View Code? Open in Web Editor NEW
75.0 6.0 16.0 5.59 MB

《The Art of Writing Efficient Programs》的非专业个人翻译

License: Apache License 2.0

TeX 100.00%

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++社区的活跃成员。

本书相关

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.