نمایش نتایج 1 تا 22 از 22

نام تاپیک: مقالات ، برنامه ها و ... در رابطه با firemonkey (فقط)

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #22
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    37
    پست
    894

    نقل قول: مقالات ، برنامه ها و ... در رابطه با firemonkey (فقط)

    خوب، من علت کندی رو پیدا کردم. موقعی که لپتاپ من به برقه از گرافیک با حالت High Performance GPU استفاده میکنه و موقعی که به برق نیست سویچ میکنه رو حالت Power Saving GPU البته از خودم میپرسه بعد سویچ میکنه. حالت High Performance قوی تر از اون یکیه که خوب از اسماشون واضحه ولی تو حالت ضعیف فایر مانکی سرعتش خوبه ولی تو حالت High Performance سرعتش کمه. و لابد از خصیصه ای می خواد استفاده کنه که حالت High Performance از اون پشتیبانی نمیکنه و در نتیجه برای اینکه برنامه از کار نیفته به شکل نرم افزاری شبیه سازی میکنه.
    اما یونیت، تو یک پروژه با فایر مانکی فایل FMX.Types3D و همچنین D3DX9 رو به قسمت uses اضافه کن و دو تا Button روی فرم بگذار و دو تا دستور زیر رو به دکمه ها بده:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    m : TMatrix3D;
    t0 : Double;
    I: Integer;
    s : string;
    j: Integer;
    begin
    t0 := Now * 86400.0;
    for I := 0 to 10000000 do
    begin
    m := Matrix3D(
    0.9, 0.1, 0.1, 0.0,
    0.1, 0.8, 0.2, 0.0,
    0.3, 0.2, 0.79, 0.0,
    10.05, 20.1, 30.4, 1.0);
    InvertMatrix(m);
    end;
    t0 := Now * 86400.0 - t0;
    for I := 0 to 3 do
    begin
    s := s + #13#10;
    for j := 0 to 3 do
    s := s + FloatToStr((PD3DXMATRIX(@m))^.m[i, j]) + ' ';
    end;
    ShowMessage('Time : ' + FloatToStr(t0) + #13#10#13#10'Matrix : ' + s);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    m : D3DXMATRIX;
    t0 : Double;
    I: Integer;
    s : string;
    j: Integer;
    begin
    t0 := Now * 86400.0;
    for I := 0 to 10000000 do
    begin
    m := D3DXMATRIX.Create(
    0.9, 0.1, 0.1, 0.0,
    0.1, 0.8, 0.2, 0.0,
    0.3, 0.2, 0.79, 0.0,
    10.05, 20.1, 30.4, 1.0);
    D3DXMatrixInverse(m, nil, m);
    end;
    t0 := Now * 86400.0 - t0;
    for I := 0 to 3 do
    begin
    s := s + #13#10;
    for j := 0 to 3 do
    s := s + FloatToStr(m.m[i, j]) + ' ';
    end;
    ShowMessage('Time : ' + FloatToStr(t0) + #13#10#13#10'Matrix : ' + s);
    end;

    دکمه ی اول با Types3D و دکمه ی دوم با D3DX کار می کنه و بعد از فشردن هر دکمه زمان مقدار دهی اولیه به همراه معکوس کردن یک ماتریس، به تعداد شمارنده حلقه رو میبینید. مقایسه کنید. بیشتر از 5 برابر اختلافشونه. و اگه بخوایم با نامردی تمام مقایسه کنیم اون مقدار دهی اولیه رو هم می بریم بیرون از حلقه :

    procedure TForm1.Button1Click(Sender: TObject);
    var
    m : TMatrix3D;
    t0 : Double;
    I: Integer;
    s : string;
    j: Integer;
    begin
    t0 := Now * 86400.0;
    m := Matrix3D(
    0.9, 0.1, 0.1, 0.0,
    0.1, 0.8, 0.2, 0.0,
    0.3, 0.2, 0.79, 0.0,
    10.05, 20.1, 30.4, 1.0);
    for I := 0 to 10000000 do
    begin
    InvertMatrix(m);
    end;
    t0 := Now * 86400.0 - t0;
    for I := 0 to 3 do
    begin
    s := s + #13#10;
    for j := 0 to 3 do
    s := s + FloatToStr((PD3DXMATRIX(@m))^.m[i, j]) + ' ';
    end;
    ShowMessage('Time : ' + FloatToStr(t0) + #13#10#13#10'Matrix : ' + s);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    m : D3DXMATRIX;
    t0 : Double;
    I: Integer;
    s : string;
    j: Integer;
    begin
    t0 := Now * 86400.0;
    m := D3DXMATRIX.Create(
    0.9, 0.1, 0.1, 0.0,
    0.1, 0.8, 0.2, 0.0,
    0.3, 0.2, 0.79, 0.0,
    10.05, 20.1, 30.4, 1.0);
    for I := 0 to 10000000 do
    begin
    D3DXMatrixInverse(m, nil, m);
    end;
    t0 := Now * 86400.0 - t0;
    for I := 0 to 3 do
    begin
    s := s + #13#10;
    for j := 0 to 3 do
    s := s + FloatToStr(m.m[i, j]) + ' ';
    end;
    ShowMessage('Time : ' + FloatToStr(t0) + #13#10#13#10'Matrix : ' + s);
    end;

    حالا اختلاف تا بیشتر از 7.5 برابر میرسه!
    شاید این فقط برای مواقعی باشه که فایرمانکی می خواد در صورت نبودن پشتیبانی از طرف ست افزار، کار رو به شکل نرم افزاری شبیه سازی کنه. شایدم می خواد مستقل از dll هایی مثل d3dx باشه و کندیش رو بجون خریده.
    آخرین ویرایش به وسیله Ananas : سه شنبه 30 خرداد 1391 در 00:24 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •