cpp性能优化

函数调用的时候,参数传引用。尽量减少传递参数。

缓存buffer,把经常使用的数据缓存下来,避免重复计算。用空间换时间。

预计算,有时候计算方便,可以把后面的数据的数据一并计算,然后暂时存起。下个循环不用使用预计算的数据。

使用简单数据,能用string就不用vector of char. 能用char*就不用string。

数据大小固定,对齐。动态分配内存不如静态分配内存。

SIMD指令优化,一次处理多个数据。注意对齐问题。

缓存cache的命中率的问题,数据连续性,指令连续性。一个for循环调用两个大函数,函数之间访问的数据不一样。缓存的数据不连续,需要换页访问。造成性能降低。而分成两个循环虽然多了些循环的指令,但是数据是连续的,性能会更好。

根据数据出现概率频率,可以优化条件分支。

循环中,访问量多的变量可以使用寄存器。此外,在栈上的指令,数据会在cache中。比访问堆上的内存要快上不少。

顺序访问,用指针比数组索引要快。

如果数据是共享的,尽量使用单线程模型,多线程有一定开销。

线程的数据尽量独立,减少或避免同步的操作。

你可能感兴趣的:(cpp性能优化)