
C++
通常来说,C和
C++性能的上限在多数情况下是相同的。不过存在一种情况,就是在
C++能够进行编译期计算而C无法进行的地方,
C++的性能会高于C。例如,很多人期待已久的C23里著名的embed功能,它能够在编译时把文件内容赋值给一个字符数组,从而省去读文件的代码。这样一来,对于配置文件,就可以直接在代码里从字符数组进行解析。在
C++中,可以将字符数组定义为constexpr,并且解析这个数组(也就是解析配置文件的功能)也能写成constexpr。如此,相关的
C++代码生成的可执行程序就比C代码节省了解析的时间,性能也就得到了提升。最新的clang++已经支持embed功能了。假设有一个名为config.txt的配置文件,在
C++中使用embed + constexpr进行解析大概是这样的:parseConfig是一个constexpr函数,解析之后会通过std::array, 2>类型返回(代码太长就不贴出来了)。
C++能够利用编译器支持编译期编程的特性,在某些情况下提升性能,就像上面所举的这个例子,配置文件越复杂,节省的时间就越多。至于embed在
C++中的使用方法,可以观看
C++ Weekly的一个只有几分钟的视频。