工程语言基础

编译反馈优化(PGO)

原文: 字节跳动在PGO反馈优化技术上的探索与实践 PGO(Profile-guided optimization)通常也叫做 FDO(Feedback-directed optimization),它是一种编译优化技术,它的原理是编译器使用程序的运行时 profiling 信息,生成更高质量的代码

Read More »

POSIX 线程同步——条件变量

POSIX多线程程序设计. 作者 美 David R.Buten 条件变量是用来通知共享数据状态信息的。可以使用条件变量来通知队列已空、或队列非空、或任何其他需要由线程处理的共享数据状态。 当一个线程互斥地访问共享状态时,它可能发现在其他线程改变状态之前它什么也做不了。状态可能是对的和一致的,即没有

Read More »

POSIX 线程同步——互斥量

POSIX多线程程序设计. 作者 美 David R.Buten 大部分多线程程序需要在线程间共享数据。如果两个线程同时访问共享数据就可能会有问题,因为一个线程可能在另一个线程修改共享数据的过程中使用该数据,并认为共享数据保持未变。 使线程同步最通用和常用的方法就是确保对相同(或相关)数据的内存访问

Read More »

重载函数调用运算符

C++允许重载函数调用运算符,写作operator()。如果在自定义的类中编写一个operator(),那么这个类的对象就可以当成函数指针使用。包含函数调用运算符的类对象成为函数对象,或简称为仿函数。只能将这个运算符重载为类的非静态方法。 下面是一个简单的类,它带有一个重载的operator()以及

Read More »

C++ 中使用 argc 和 argv 的命令行参数

命令行参数在 DOS 或 Linux 等命令行操作系统中的程序名称之后给出,并从操作系统传递给程序。要在程序中使用命令行参数,必须首先了解 main 函数的完整声明,main 函数实际上可以接受两个参数:一个参数是命令行参数的数量,另一个参数是所有命令行参数的完整列表。 main 的完整声明如下所示

Read More »

多媒体指令集SIMD优化入门

以下内容翻译自:Practical SIMD Programing–Jacco Bikker 2017Basics of SIMD Programming SIMD 操作能够用一条指令处理多个数据,广泛用于多媒体应用中的 3D 图形和音频/视频处理。SIMD全称Single Instru

Read More »

优化代码内存访问

以下内容总结自《Intel® 64 and IA-32 Architectures Optimization Reference Manual》 本文内容讨论针对Intel处理器优化代码内存访问的相关技术。主要内容如下: 1 加载和存储执行带宽 通常,加载和存储是代码执行中最频繁的操作,高达 40%

Read More »