zoukankan      html  css  js  c++  java
  • C++ 嵌入汇编程序提高计算效率

        因为汇编语言比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();
    }


        假设是复杂的程序中,则性能的差异将更加明显可见。

  • 相关阅读:
    hihocoder1634 Puzzle Game
    hihocoder1580 Matrix
    BZOJ3036 绿豆蛙的归宿
    CF|codeforces 280C Game on Tree
    [SDOI2011] 计算器
    [SCOI2007] 修车
    [JSOI2008] 球形空间产生器sphere
    APIO2012 派遣dispatching | 左偏树
    OI数据结构&&分治 简单学习笔记
    BZOJ3307 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7083894.html
Copyright © 2011-2022 走看看