Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   DEC Benchmark und FMX Buttons (https://www.delphipraxis.net/207981-dec-benchmark-und-fmx-buttons.html)

TurboMagic 24. Mai 2021 19:49

DEC Benchmark und FMX Buttons
 
Hallo,

so, der aktuelle Entwicklungszweig der DEC führt nun alle
SHA3 Testvektoren des NIST korrekt aus. Soweit so gut.

Jetzt habe ich auch einen Hash-Benchmark als neues Demo
Programm hinzugefügt, nur macht das noch an zwei Stellen Ärger
und ich weiß nicht warum.

Unter Win32 funktioniert alles aber unter Android 64 geht
der Button am oberen Bildschirmrand nicht (daher testhalber
der auf dem Grid platzierte) und beim SHA3_256 gibt's unter
Android 64 einen Crash. SHA3_224 geht aber fehlerfrei.

Irgendwer eine Idee?

Grüße
TurboMagic

Michael II 25. Mai 2021 08:57

AW: DEC Benchmark und FMX Buttons
 
Mittlerweile gelöst.

Ich habe eine Gegenfrage, welche sicher jemand (unabhängig von DEC Kenntnissen) beantworten kann.

Ich halte das hier Beschriebene für einen heftigen Bug. Vielleicht bin ich aber auch einfach viel zu "Android unerfahren" und mache was falsch.

Ich wollte die Benchmark App (\DEC\Demos\HashBenchmark_FMXHashBenchmark.dproj) von DEC unter Android 64 debuggen und habe einen Haltepunkt gesetzt in procedure TFormMain.RunBenchmark Zeile FStopwatch.Reset; (Code unten) Bedingung rowindex=19. (Ich habe also "rowindex" klein geschrieben.)

Delphi-Quellcode:
procedure TFormMain.RunBenchmark(ClassName: string; RowIndex: Integer);
var
  Hash      : TDECHash;
  HashResult : TBytes;
  i         : Integer;
begin
  Hash := TDECHash.ClassByName(ClassName).Create;

  try
    FStopwatch.Reset;

Wenn das Programm das erste Mal bei diesem Haltepunkt durchläuft, dann wird mir diese Fehlermeldung angezeigt:

[Window Title]
Fehler
[Content]
Ungültige Bedingung für Haltepunkt: rowindex = 19. Fehlermeldung: error: use of undeclared identifier 'rowindex'
error: 1 errors parsing expression
[OK]

Debuggen unter Windows funktioniert wie erwartet: Es wird beim Erreichen von rowindex=19 angehalten.

So weit so schlecht. Also denke ich, ich muss Gross- und Kleinschreibung beachten. Da unter Haltepunkt bereits rowindex=19 bekannt ist, nimmt's meinen "neuen" Haltepunkt RowIndex=19 nicht an (schade). Die Fehlermeldung bleibt.

Also teste ich halt mit RowIndex=18. Unter Windows läuft's wiederum wie erwartet.

Unter Android64: Jetzt wird kein Fehler mehr angezeigt. Aber jetzt hat der Haltepunkt RowIndex=18 Einfluss aufs Programm (!).

Weiter unten in der gleichen Prozedur wird ein Wert in sg_Results.Cells[1, RowIndex] (TStringGrid) geschrieben.

Delphi-Quellcode:
    sg_Results.Cells[1, RowIndex] :=
      Format('%0:f', [cIterations / (FStopwatch.ElapsedMilliseconds/1000)]);
    sg_Results.Cells[2, RowIndex] := FStopwatch.Elapsed.ToString;
Rate mal, wo reingeschrieben wird.

Alle Ausgaben werden nach sg_Results.Cells[1, 18] "umgeleitet".

Die Haltepunkt Bedingung RowCount=18 bewirkt also unter Android, dass im Programm RowCount:=18 gesetzt wird.


Jede Hilfe wird geschätzt ;-). Danke.

Mittlerweile gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 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