用四个文件没必要,三个就可以
Person.h, PersonImpl.h, Person.cpp
其中Person.h是暴露给外部的公共头文件,PersonImpl.h是内部头文件对外不可见,建议分两个目录存放
Person.cpp里面同时包含 class Person和class PersonImpl的实现。
这样做的好处是 :
一,保持二进制兼容,公共头文件里面只有接口定义,而不包括实现,即使实现部分有改变不影响接口,比如增删改类成员变量,不会导致class的sizeof变化或者内存layout的变化
二,提升编译速度,小项目当然感觉不到,起码50万行以上的项目才会比较明显,这个结论是非常确定的,不要随便质疑前辈的智慧,如果你确信项目未来代码规模会比较大,那么相信照着做就好了。
三,方便未来重构,接口和实现分离,即使大的架构改动,原有的接口代码改动小,容易平滑过度。
开局一张图,剩下全靠猜?这个没法评价。
从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。
跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。
调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。
然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。
如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。