P3D-DataBench

Onkel_Dithmeyer

Redaktion
☆☆☆☆☆☆
Mitglied seit
22.04.2008
Beiträge
12.943
Renomée
4.014
Standort
Zlavti
  • BOINC Pentathlon 2011
  • BOINC Pentathlon 2012
  • BOINC Pentathlon 2013
  • BOINC Pentathlon 2014
  • BOINC Pentathlon 2015
  • BOINC Pentathlon 2016
  • BOINC Pentathlon 2017
  • BOINC Pentathlon 2018
  • BOINC Pentathlon 2019
  • SETI@Home Intel-Race II
  • BOINC Pentathlon 2020
  • THOR Challenge 2020
  • BOINC Pentathlon 2021
  • BOINC Pentathlon 2022
  • BOINC Pentathlon 2023
Wie ihr vielleicht mitbekommen habt habe ich meinen ersten Test für den hiesigen Planeten veröffentlicht. (link) Dabei habe ich die Bandbreite recht aufwendig getestet. Mit dem klicken auf "kopieren" habe ich in der anderen Hand mit einer Stopuhr die Zeit genommen. Das ganze pro Paket (4 Stück) drei mal und das in beide Richtungen. Das macht 3x4x2 also 24 Zeitmessungen die bei der Paketgröße jeweils um die 10 Minuten gedauert haben. Macht 240 Minuten nonstop vor dem Testaufbau hocken und Zeiten nehmen. Da wird uns entschlossen haben das Gebiet der NAS bei uns, mit einem kleinen Roundup zu erweitern, hab ich mich an die Arbeit gemacht ein Programm zu schreiben, das mir eben diese Arbeit abnimmt. ^^

Kurz überlegt, was kann ich? C++ ein wenig, da muss ich ewig viel nachlesen. QBasic, wer macht das heute noch? Ne, da muss schon ne grafische Oberfläche her. Dazu soll das Ding schnell zu schreiben sein. große Optimierung muss nicht sein. Was bleibt? VisualBasic? Ne, ich hab hier nur ne uralte Version von neunzehnhunderschlagmichtot und ich schreib das dann doch lieber auf ner offenen Plattform. Also Java... kann ich kein Stück. Ich entsinne mich an meine Delphizeit und an die freie Portierung Lazarus. Beide bauen auf Pascal auf. Simple, und schnell und ich hab damit die meiste Erfahrung. Das coole, ich kann damit auch unter Linux schreiben. Leider hab ich es dort aber nicht hinbekommen eine vernünftige *.exe zu erzeugen, die auf meinem Testsystem mit Windows 7 läuft.

Also hab ich das Programm komplett auf meinem Laptop entwickelt. Der Vorteil, man kann die ShellApi nutzen, die einem erlaubt etwa den Dateitransfer von Windows zu starten. Dabei kann man auch einige Parameter setzen. Die in dem Genre bekannte Seite Delphi-Praxis hat dazu eine ganz brauchbare Kurzanleitung: Link
Man muss in die "Uses" die "ShellApi" einfügen und dann kann man einfach folgende Funktion einfügen:
Code:
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString;
    Flags: FILEOP_FLAGS): Integer;
var
  FromPath, ToPath: AnsiString;
  SHFileOpStruct: TSHFileOpStruct;
begin
  FromPath := aFrom + #0#0;
  ToPath := aTo + #0#0;
  with SHFileOpStruct do
  begin
    Wnd := 0;
    wFunc := aOperation;
    pFrom := PAnsiChar(FromPath);
    if ToPath <> '' then
    begin
      pTo := PAnsiChar(ToPath)
    end else begin // target available
      pTo := nil;
    end; // target not available
    fFlags := Flags;
  end; // structure
  Result := SHFileOperationA(SHFileOpStruct);
end;

Danach kann man die Funktion mit einigen netten Parametern aufrufen, die etwa die Statusanzeige der Übertragung verbergen oder ungefragtes Überschreiben ermöglichen.

Soweit so gut. Damit sollte sich was machen lassen. Das ganze müsste ich dann noch in eine Schleife packen, damit die Vorgänge beliebig oft wiederholt werden können und dann muss ich das auch noch so schreiben, dass ich das irgendwann noch irgendwie nachvollziehen kann. Dabei hapert es meißt an meinem Programmierstil. If, then, goto *grins*

Also machen wir das ganze mal etwas strukturierter. Tja, gedacht! Im Endeffekt sieht das Programm wieder total wirr aus. Aber immerhin das meiste Funktioniert. Mittlerweile ist das Programm in der Version 0.2.2 angekommen. Version 0.1 war der erste funktionierende Datentransfer :-) Version 0.1.1 hat einige Fehler beseitigt und den Kopiervorgang beliebig oft wiederholt. Version 0.2 der große Sprung machte dann estmals eine Zeitmesseung und Version 0.2.1 bildete dann sogar den Mittelwert. 0.2.2 kann jetzt immerhin schon den Transfer in beide Richtungen ausführen und beachtet dabei auch meine geringe Kapazität der SSD und löscht bei mir jeden übertragenen Ordner wieder, bevor das ganze noch mal anfängt, außerdem kann man die ermittelten Werte jetzt auch in einer TXT speichern. Das ganze sieht im Moment so aus:
blog_attachment.php


Natürlich in stylischem Grün ;D

Ich muss aber noch einige Bugs beseitigen. Zum Beispiel erstellt das Programm im Zielverzeichnis Unterordner, die ganz kreativ nach der Zahl der Durchläufe z.B. "1" "2" "3"...... Wie es weiter geht könnt ihr euch vielleicht denken. Zurück zum Fehler. Wenn einer dieser Ordner bereits existiert schmiert das Programm sang und klanglos ab. Da fehlen noch einige Abfragen, ob der Ordner schon existiert. Ob das Quellverzeichnis existiert und vielleicht noch der Hinweis, dass das Programm gelegendlich dazu neigt bei Angabe eines falschen Zielverzeichnisses fast wahllos irgendwo Daten hinschmiert. Gut, ist mir erst ein mal passiert, aber wenn auf einmal die Festplatte voll ist wundert man sich doch ^^

Für Lazarus typisch ist die Anwendung trotz weniger Seiten Code bereits 12 MB groß. Mit 7z komprimiert aber nur noch etwa ein Zehntel *buck*

So damit wisst ihr auch, womit ich mir die ganze Zeit die Stunden um die Ohren haue. Ihr wisst vielleicht, wie das ist, wenn da ein Fehler ist und ihr einfach keine Lösung dafür findet. Ich hab mitten in der Vorlesung fast nen Wutanfall bekommen... Naja gut, da war auch mein Kaffee-Pegel etwas gering *suspect*


Euch allen noch ein schönes Wochenende! Ich muss sagen, das Wetter heute war herrlich! Hab meinen ersten leichten Sonnenbrand des Jahres, nach einer kleinen Radtour und einer guten Stunde rumpflezen am Elbufer :D



edit:
fragt mich bitte nicht, warum da so ein ellenlanger Absatz drinnen ist. Vielleicht liegt das am Code, hab ihn deswegen mal in einen Spoiler gepackt *noahnung*
 

Anhänge

  • P3D Databench 0.2.2.PNG
    P3D Databench 0.2.2.PNG
    26,3 KB · Aufrufe: 1.636
Ohhh ein NAS Roundup. Na das interessiert doch mal. Fals ich was zu Qnap beisteuern kann.. ;)

Das Tool ist auch ne nette Idee.
Muss ja nicht schön sein sondern funktionieren und dir/euch das Testen erleichtern.

Daumen hoch..so von Onkel zu Onkel ;)
 
Klingt spannend. Hab grad eins von Synology gekauft. Mal sehen was die Testergebnisse zeigen werden.
 
Synology ist auch dabei. Qnap aber nicht....

Alle Geräte sind sehr interessant und vor allem die Geräte mit mehreren Laufwerken haben mich dann doch bewegt das Programm noch weiterzuentwickeln. Bin jetzt bei Version 0.4.2.1 angekommen und das ganze läuft schon sehr stabil. Leider ist der Code auch schon sehr komplex, weil ich am Anfang alles in eine Prozedur gestopft hab. Zumindest gibts jetzt schon mal einige Fehlerabfragen und man muss die Verzeichnisse nicht mehr per Hand eintragen, sonder kann das mit einem Popup-Browser auswählen. :)
 
Zurück
Oben Unten