今天测试一个常用功能时,发现纯C语言竟然比C++快15倍

B站影视 日本电影 2025-08-04 20:56 2

摘要:以上代码用vs2022编译,并把C++所有优化功能打开,比如:最大优化(优选速度) (/O2)

今天无意中在测试一个常用功能时,发现纯C语言竟然比C++快15倍

#include

int main(int argc, char* args)

{

int max = 1 * 10000;

int c1;

int c2;

int c;

c1 = (int)nx::Tick;

//auto start = std::chrono::high_resolution_clock::now;

for (int i = 0; i

{

void* p = malloc(1); free(p);

//char* a = new char[1]; delete a;

}

//auto end = std::chrono::high_resolution_clock::now;

//std::chrono::duration elapsed = end - start;

//double cc = elapsed.count * 1000;

c2 = (int)nx::Tick;

c = c2 - c1;

//printf("\np=%s\n", str.Value);

printf("\nc=%d\n", c);

//nx::Test test;

//test.Run;

return 0;

}

以上代码用vs2022编译,并把C++所有优化功能打开,比如:最大优化(优选速度) (/O2)

运行时间是250毫秒-300毫秒

同样,用vs2022创建个工程,把main.cpp改名为纯C的风格,main.c,

编译后运行时间是15毫秒-27毫秒

我开始以为是因为C++执行void* p = malloc(1); free(p);不够优化,便改成char* a = new char[1]; delete a;,结果也是一样,运行时间基本不变。反复在main.cpp和main.c两个项目中切换编译,各种优化都打开,代码生成都设定多线程 DLL (/MD)

结果全是一样的结果,纯C竟然比C++快了15倍,把申请内存从1字节改成100字节,也是一样,就是快了15倍到20倍左右。

其实纯C完全可以用面向对象的方式开发项目,只是纯C的每个新“对象”要比C多打几行代码的事。所以,个人认为,如果不是非C++不可的情况下,还是用纯C开发吧,一样可以做到面向对象开发,一个可以用纯C做到虚涵数,一样可以用纯C做到继承的功能,只是要多打几行代码而已,但这运行效率却快了20倍

来源:帝商朝

相关推荐