因为汇编语言比C++更接近硬件底层,所以在性能要求高的程序中往往能够採取在C++代码中嵌入汇编的方式来给程序提速。
在VC中能够简单的通过
__asm { //在这里加入汇编代码 }来实现。
以下通过一个很easy的样例来看汇编交叉编译和直接的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 ", a1, b1); printf("普通c++程序花费时间%dms ", 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 ", a2, b2); printf("汇编交叉编译程序花费时间%dms ", clock() - gettime); getchar(); }
假设是复杂的程序中,则性能的差异将更加明显可见。