由于汇编语言比C++更接近硬件底层,所以在性能要求高的程序中往往可以采取在C++代码中嵌入汇编的方式来给程序提速。
在VC中可以简单的通过
__asm { //在这里添加汇编代码 }
来实现。下面通过一个非常简单的例子来看汇编交叉编译和直接的C++代码之间的性能差距,代码和运行结果如下:
#include <stdio.h> #include "time.h" #define NumberOfCalculation 10000000 void main() { long gettime = clock(); unsigned int i = NumberOfCalculation; unsigned int a1 = 1, b1 = 2; unsigned int a2 = 1, b2 = 2; while (i--) { //c a1 = a1 + b1; b1 = a1 + b1; } printf("a:%d b:%d\n", a1, b1); printf("普通c++程序花费时间%dms\n", clock() - gettime); i = NumberOfCalculation; gettime = clock(); while (i--) { //汇编 __asm { mov eax, a2; mov ebx, b2; add eax, ebx mov a2, eax; add ebx, eax mov b2, ebx; } } printf("a:%d b:%d\n", a2, b2); printf("汇编交叉编译程序花费时间%dms\n", clock() - gettime); getchar(); }
如果是复杂的程序中,则性能的差异将更加明显可见。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-28 22:06:26