Time Stamp Counter <- optimieren, dass es nicht so sehr ruckelt



  • hi,

    aus dem forum habe ich den code,
    den link weiss ich jetzt nicht mehr,

    mein problem ist, dass das programm wenn ich es zb verschiebe ruckelt,
    bzw langsam arbeitet, veilleicht kann mir jemand helfen....

    //---------------------------------------------------------------------------
    
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    #include "cpu_auslesen.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    
    int igOldMouseX, igOldMouseY;
    bool onoff=true;
    
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void GetMHZ()
    {
      unsigned long v1, v2, v3, v4;
      long double MHz;
    
      _asm{
            rdtsc
            mov [v1], eax
            mov [v2], edx
          }
    
      ::Sleep(500);
    
        _asm{
            rdtsc
            mov [v3], eax
            mov [v4], edx
          }
    
      v1=v3-v1;
      v2=v4-v2;
      MHz=(v1+(v2*(2^32)))/1000/500;
    
     Form1->Label1->Caption=(int)MHz;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::bnt_EndeClick(TObject *Sender)
    {
    Close();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
      GetMHZ();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Timer1->Interval = 1;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
      int iDeltaX, iDeltaY;
      if (Shift.Contains(ssLeft))
      {
        iDeltaX = X - igOldMouseX;
        iDeltaY = Y - igOldMouseY;
        Top = Top + iDeltaY;
        Left = Left + iDeltaX;
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::btn_PauseClick(TObject *Sender)
    {
    if(onoff == true)
     {
     onoff = false;
     Timer1->Enabled=false;
     btn_Pause->Caption="Weiter";
     }
    else
     {
      onoff = true;
      Timer1->Enabled=true;
      btn_Pause->Caption="Pause";
     }
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
      if (Button == mbLeft)
      {
        igOldMouseX = X;
        igOldMouseY = Y;
      }
    }
    //---------------------------------------------------------------------------
    

    so, sieht mein form aus !!!

    object Form1: TForm1
      Left = 330
      Top = 119
      BorderStyle = bsNone
      ClientHeight = 76
      ClientWidth = 235
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnMouseDown = FormMouseDown
      OnMouseMove = FormMouseMove
      PixelsPerInch = 96
      TextHeight = 13
      object Label1: TLabel
        Left = 144
        Top = 15
        Width = 18
        Height = 37
        Caption = '0'
        Color = clBtnFace
        Font.Charset = DEFAULT_CHARSET
        Font.Color = clRed
        Font.Height = -32
        Font.Name = 'MS Sans Serif'
        Font.Style = []
        ParentColor = False
        ParentFont = False
      end
      object bnt_Ende: TButton
        Left = 16
        Top = 7
        Width = 75
        Height = 25
        Caption = 'Ende'
        TabOrder = 0
        OnClick = bnt_EndeClick
      end
      object btn_Pause: TButton
        Left = 16
        Top = 39
        Width = 75
        Height = 25
        Caption = 'Pause'
        TabOrder = 1
        OnClick = btn_PauseClick
      end
      object Timer1: TTimer
        Interval = 250
        OnTimer = Timer1Timer
        Left = 152
        Top = 15
      end
    end
    

    ich will es so wie das beispiel hier -> http://www.ricosonntag.de/download/examples/CPUSpeed.zip
    ohne ruckeln beim verschieben haben...

    mfg

    HubertS



  • Soll ichs dir sagen?

    Timer1->Interval = 1;
    


  • auch wenn ich das weg mache ruckelt es bei mir,
    wenn du dir das von rico sonntag angeschaut hast wirst du sehen,
    dass es sich sehr flüssig verschieben lässt,

    mein programm läßt sich zwar verschieben, nur nicht flüssig,



  • wahrscheinlich wird bei dem Programm von Rico Sonntag ein separater Thread zur Ermittlung der CPU-Speed verwendet

    mehr zu Threads gibst hier



  • so, es hat einige zeit gedauert,

    ca. 5 Tage, bis ich das mit den threads verstanden habe,

    wer sich mein fertiges projekt anschauen möchste,

    der kann das von meiner neuen seite ziehen -> www.hubert-s.de.vu ...unter download,

    die habe ich extra für diesen anlass geproggt,
    vielleicht kommt mehr von mir dazu,

    auf wunsch kann ich mein quellcode, entweder hier im forum oder auf meiner "neuen" seite zur verfügung stellen, entweder oder, oder da oder dort, oder gar nicht, :p


Anmelden zum Antworten