想开新坑了,但是写什么呢?大项目,还是小项目,窗口程序还是控制台工具,跨平台还是不跨平台,是否兼容高DPI,考虑完整的优化还是暂不考虑优化,不考虑优化的话是否留坑便于以后重写对象实现优化,怎么留坑,跨平台的话跨哪几个平台,兼容最低系统版本到多少,兼容最低编译器到哪里,多线程跨平台问题如何解决,是否使用OpenMP,是否假定编译器必定支持全程序优化,写的项目是不是已经有开源的了,依赖的数学库、算法库等,自己写,还是用别人的,用别人的库的话,用静态库还是动态库,还是直接用源码,是否不使用浮点数,不使用浮点数是使用定点数还是整数,是否要为了能欢快地使用定点数而写一个自己的定点数计算库,还是用别人的定点数库,是否写一个重载运算符的定点数类,这个定点数类用的整数变量类型应该是多少位的,是否考虑移植到单片机,是的话内存管理是否写成能够编译为静态分配内存的方式,是否需要做到精确到字节的内存使用量控制,是否考虑兼容标准库不全的编译器,函数和变量怎么命名,头文件怎么命名,驼峰式还是全小写加下划线,是否考虑SIMD优化,是的话是否检测CPUID,检测了CPUID后是函数内跳转还是使用函数指针来切换不同指令集的函数实现,写asm还是写intrinsic,用哪款汇编器,是否把vec4用union封装为自带__m128类型的,是的话是否禁止数学库使用者直接访问vec4的x y z w成员,不禁止的话是否提供构造、load、store方法,是否实现运算符重载,是否假定vec4一定是16字节对齐的,是否允许用户用宏调整vec4的x y z w的类型(float、double),是否对double也编写SIMD优化的实现,是否自动跑分检测是写的SIMD快还是参考实现的快,怎么计时,怎么实现跨平台计时,如何保证跑分不受到上下文切换的影响,是否考虑使用GPU优化,用OpenGL,OpenCL,CUDA,还是DX,OpenCL如何保证能跨平台到移动端,OpenGL如何保证着色器一定能通过各种平台的编译(以及是否包括iOS平台),如何保证着色器float的精度,对应平台不支持highp怎么办,万一运行环境下的OpenGL只有固定管线怎么办,万一运行环境没有OpenGL只有DirectX怎么办,运行环境的OpenGL在驱动层面上的实现不同导致你认为的优化变成了负优化怎么办,万一着色器耗时太久导致显卡驱动GG怎么办……