Bcc Info
หน้าหลัก arrow บทความ อ.รชต arrow ความเร็วการเขียนโปรแกรมระหว่าง C++ และ inline ASM
 
ความเร็วการเขียนโปรแกรมระหว่าง C++ และ inline ASM

วันนี้ได้มีโอกาศทดสอบการเขียนโปรแกรมแกรมแบบแปลกๆโดยมีคำถามว่า ถ้าคำนวณหาค่า fx = Sin(x) จำนวน 100000 loop ภาษาอะไรจะคำนวณได้เร็วกว่ากัน

โหลดโปรแกมเพื่อทดสอบ Win32Bit  176K Rar format

Code มี ดังนี้

#include "stdafx.h"
#include "Windows.h"
#include "math.h"


int main(int argc, char* argv[])
{

    float il = 0.0;
    float ires = 0.0;
    const float one = 1.0;

    DWORD dwStart = GetTickCount();

    for (int cnt = 0; cnt < 1000000;cnt ++)
    {
        ires = sin(++il);
       
        }


    DWORD dwInterval = GetTickCount() - dwStart;


    printf("\nSine = %.3f \n",ires);
    printf("C++ Operation is completed thrugh %d ms! \n",(int)dwInterval);

    // --------------------------
   
     dwStart = GetTickCount();

    /*for (int cnt = 0; cnt < 1000000;cnt ++)
    {
        ires = sin(++il);
       
        }*/
     ires = 0.0;
     il = 0.0;

    _asm {
        mov ECX, 1000000
            finit
    next:
        fld1
            fadd DWORD PTR il
            fstp DWORD PTR il

            fld DWORD PTR il
            fsin
            fstp DWORD PTR ires
            dec ECX
            jnz next
            fwait
    };

     dwInterval = GetTickCount() - dwStart;


    printf("\nSine = %.3f \n",ires);
    printf("ASM Operation is completed thrugh %d ms! \n",(int)dwInterval);
   
    //---------------------------
    getchar();
    return 0;
}


แก้ไขล่าสุดเมื่อ ( Sunday, 13 July 2014 )
 
Advertisement

Mambo is Free Software released under the GNU/GPL License.
เว็บนี้ขับเคลื่อนด้วย แมมโบ้ลายไทย
Mambo LaiThai base on MamLang