AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

performance c++ <> Delphi

Ein Thema von EWeiss · begonnen am 9. Aug 2017 · letzter Beitrag vom 14. Aug 2017
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

performance c++ <> Delphi

  Alt 9. Aug 2017, 15:50
Kurze Frage.

Wie hoch ist die Wahrscheinlichkeit das beim senden eines Event aus einer Delphi DLL C++ sich verschlucken kann und es zu einem Absturz der Anwendung kommt.
Gibt es Statistiken?

Mir möchte jemand erzählen das wenn er seine Scrollbar sehr schnell zum Ende bewegt wenn ein Movie spielt seine Anwendung dabei abstürzt.

Und sein Fix wäre im Event eine Postmessage an seine Winproc zu senden und dort erst den Code auszuführen
der eigentlich in das Event gehört.

Er ist der Meinung man könnt das nur beheben wenn man meine DLL nach C++ portiert (mache ich nicht)

gruss
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:03
Kurze Antwort: Nein.

Bischen wirr geschrieben der Beitrag (so wie meine meist.)

Wie kann man ein Event an C++ schicken? C++ ist eine Programmiersprache

Wenn es um Probleme gibt und Postmessage ist im Spiel ist Delphi sicher so viel langsamer, als dass das irgendweine Rolle spielen könnte.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:13
Hallo,
Zitat:
Mir möchte jemand erzählen das wenn er seine Scrollbar sehr schnell zum Ende bewegt wenn ein Movie spielt seine Anwendung dabei abstürzt.
Dann baue ihm eine Dummy-DLL, deren Aufrufe nichts machen zum Test.
Oder er soll sich eine c++-DLL bauen.

Und außerdem:
Wenn seine Anwendung abstürzt, was kannst du denn dafür
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:31
Von der Performance ist C++ sicherlich besser als Delphi, aber das ist definitiv nicht die Ursache des Problems.

Verwendest du in deiner Dll oder er in seinem Programm mehrere Threads?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#5

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:39
Von der Performance ist C++ sicherlich besser als Delphi, aber das ist definitiv nicht die Ursache des Problems.
Genau! Ein fehlerhaftes Programm kann man bekanntlich in jeder Programmiersprache schreiben - in manchen ist das etwas schwieriger als in anderen. Allerdings glänzt C++ gerade in diesem Punkt nicht so besonders.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:40
Wenn man überhaupt nicht weis was diese DLL und die Anwendung macht, kann man mit der Beschreibung nicht viel anfangen.

Eine Möglichkeit wäre z.B., die DLL ruft innerhalb eine Threads das Event auf.
Die Anwendung möchte im Event auf die VCL zugreifen.
Dann könnte der Eventhandler per PostMessage die Nachricht an den Hauptthread weiter leiten, der das darf.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:44
Von der Performance ist C++ sicherlich besser als Delphi, aber das ist definitiv nicht die Ursache des Problems.
Aber dann stimmt dashier nicht: Integer Performance Comparison for C++, C#, Delphi
Da kommt genau das gegenteilige Ergebnis raus.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 16:55
Zitat:
Bischen wirr geschrieben der Beitrag (so wie meine meist.)
Kein Ahnung was du wirr meinst noch deutlicher kann man das nicht formulieren.

Wenn man überhaupt nicht weis was diese DLL und die Anwendung macht, kann man mit der Beschreibung nicht viel anfangen.

Eine Möglichkeit wäre z.B., die DLL ruft innerhalb eine Threads das Event auf.
Die Anwendung möchte im Event auf die VCL zugreifen.
Dann könnte der Eventhandler per PostMessage die Nachricht an den Hauptthread weiter leiten, der das darf.
Ich weis was er macht.
Also nochmal!

Meine DLL schickt ein Event an die Anwendung welche C++ verwendet.
Die Funktion die das Event signalisiert.
Code:
BOOL KVIDEOPLAYERDEF(KVideo_Initialize)(HWND MediaWindow, BOOL UseOverlay, CBEventNotice event);
Meine Reverenz.
Code:
typedef void(__stdcall *CBEventNotice)(TPlayerEvent);
sein Reverenz.
Code:
typedef void( *CBEventNotice)(TPlayerEvent);
er meint er braucht __stdcall nicht weil die Referenz selbst bei ihm nie aufgerufen wird.

Die CallBack bei mir.. funktioniert ohne Probleme.
Code:
void __stdcall OnPlayerEvent(TPlayerEvent event)
{
    if (event == PlayEnded)
    {
        KillTimer(MovieHandle, MOVIE_TIMER);
        // IMediaSeeking mach probleme wenn Position weniger dann auf Max setzen
        INT64 MaxPos = (aMediaProperty.PlaybackLength / 10000) / 1000;
        if (Position < MaxPos)
            SetScrollPos(MovieHandle, SBS_HORZ, (int)MaxPos, TRUE);
        else
            SetScrollPos(MovieHandle, SBS_HORZ, 0, TRUE);
    }
}
Die Callback bei ihm.
Code:
void __stdcall OnPlayerEvent(TPlayerEvent event)
{
    if (event == PlayEnded)
    {
         if (CheckLoopMode()) {
            KVideo_Play();
         } else {
            SetStatusText(L"Closed");
            DisableRestoreState();
            Media_Stopped();
         }
    }
}
Hier soll es jetzt krachen wenn er seinen Slider schnell zum Ende bewegt.
Er hat das jetzt so umgangen.
Code:
void CALLBACK OnPlayerEvent(TPlayerEvent event) {
    PostMessage(hMain, WM_COMMAND, MAKLNG(IDC_PLAYENDED, 0), NULL);
}
WinProc
Code:
        case IDC_PLAYENDED:
            if (CheckLoopMode()) {
                KVideo_Play();
            } else {
                SetStatusText(L"Closed");
                DisableRestoreState();
                Media_Stopped();
            }
            break;
er ist der Meinung das es an Delphi liegt.
wäre zu langsam.

Zudem gäbe es das Problem das meine DLL synchron und MF asynchron laufen das wäre das Problem warum meine DLL zu viel CPU verwenden würde beim abspielen der Videos.

Zitat:
Verwendest du in deiner Dll oder er in seinem Programm mehrere Threads?
Ich nicht er schon.


gruss

Geändert von EWeiss ( 9. Aug 2017 um 17:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 19:53
er ist der Meinung das es an Delphi liegt.
wäre zu langsam.

Zudem gäbe es das Problem das meine DLL synchron und MF asynchron laufen das wäre das Problem warum meine DLL zu viel CPU verwenden würde beim abspielen der Videos.
Selten so blöde Aussagen gehört, die jedlicher Logik entsagen

Zitat:
Verwendest du in deiner Dll oder er in seinem Programm mehrere Threads?
Ich nicht er schon.
Dann wette ich schon fast drauf, dass hier irgendwo die Ursache zu finden ist.

er meint er braucht __stdcall nicht weil die Referenz selbst bei ihm nie aufgerufen wird
Da hat er vermutlich sogar recht, wobei das stdcall im Typedef sich auch keinesfalls negativ auswirken würde. Erfüllt halt vor allem die Funktion des selbstdokumentierenden Codes.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: performance c++ <> Delphi

  Alt 9. Aug 2017, 20:12
Zitat:
Da hat er vermutlich sogar recht, wobei das stdcall im Typedef sich auch keinesfalls negativ auswirken würde. Erfüllt halt vor allem die Funktion des selbstdokumentierenden Codes.
Nun ich bin davon ausgegangen das ein stdcall von Nöten ist um die Funktionsweise des Event zu gewähren.
Zumindest habe ich das bei unserer letzten Diskussion so verstanden.

Nun wie schon erwähnt bin kein besonders guter Kenner von C++ aber versuche mein bestes mit eurer Unterstützung..

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz