Eigener Benchmark: CubeCrypt! - BUGFIX mit besserer Performance!

GR-Thunderstorm

BIOS-Overclocker(in)
Hallo Mitcomunitysten!
Ich habe seit geraumer Zeit an einem eigenen Verschlüsselungsverfahren für Texte (später auch für Dateien) gearbeitet und bin nun so weit, eine Beta-Version zu veröffentlichen, um die Leistung auf möglichst vielen verschiedenen System zu erproben.

Eine kurze Erklärung zum Programm:

Den Verschlüsselungsablauf könnt ihr euch im wesentlichen so vorstellen, dass die Codepage 437 aufgesplittet wird in mehrere Teillisten. Anschließend werden mehrere Würfel erstellt, deren Gitterplätze periodisch mit den Symbolen der einzelnen Listen besetzt werden.

Die eigentliche Verschlüsselung läuft nun so ab, dass zunächst geschaut wird, in welchem Würfel sich ein zu verschlüsselndes Symbol befindet. Anschließend wird durch eben jenen Würfel an einem zufälligen Startpunkt mit einem zufälligen Winkel ein "Strahl" geschickt, der nun so lange in dem Würfel umherwandert, bis er auf das gesuchte Symbol trifft und anschließend wird die Anzahl der benötigten Schritte gespeichert.

Jeder Buchstabe wird also mit einer Startposition, einem Startwinkel, einer Schrittzahl und dem betreffenden Würfelindex beschrieben.

Würfelanzahl und Kantenlänge sind frei festlegbar und somit lässt sich das Verfahren beliebig stark parallelisieren.


Ich habe das Programm auf meinem PC bisher sowohl in 32bit als auch in 64bit getestet, allerdings läuft die 32bit-Version schneller. Woran genau das liegt, konnte ich bis jetzt noch nicht klären. Aber das Programm verbraucht ohnehin nur wenige MiB vom Arbeitsspeicher. Daher stelle ich hier nur die 32bit Version online, damit jedes System unter den gleichen Bedingungen arbeitet.

Getestet habe ich das Programm bisher unter WinXP (x86) und Win7 (x64).

Ich fände es toll, wenn ich das Programm sowohl Rekursiv als auch Iterativ und ebenso Multi-Threaded als auch Single-Threaded testen würdet. :) Das ganze lässt sich in den Settings einstellen.


FROHES BENCHEN!! :)

EDIT:
Ich habe einen kleinen Exploit beseitigt. Version 0.91 steht nun zum Download.



TOP SCORES ANGEFÜGT! Holt euch den ERSTEN Platz!! :D


EDIT2:

Top Scores unterteilt nach Multi- und SingleThread.


Bestenliste (nach alter Version 0.91!):

MultiThreaded:

# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 16,053 (I)
2. | Mastermaisi777 | Q6600 (3,8GHz) | 4GiB | 17,019 (R)
3. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 17,971 (R)
4. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 18,533 (R)
5. | Da_Obst | I5 2500K (3,3GHz) | 8GiB | 18,65 (I)
6. | Legacyy | I7 2600K (4 GHz) | 8GiB | 19,017 (I)
7. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 19,688 (R)




SingleThreaded:

# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 52,697 (I)
2. | Mastermaisi777 | Q6600 (3,870GHz) | 4GiB | 55,162 (I)
3. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 60,856 (R)
4. | Da_Obst | I5 2500K (3.3GHz) | 8GiB | 61,41 (I)
5. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 62,322 (I)
6. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 64,537 (R)
7. | Legacyy | I7 2600K (4 GHz) | 8GiB | 65,816 (I)


Erklärung zu den Modi:
I = Iterativ; R = Rekursiv (die kürzere Zeit von beiden wird in die Liste eingetragen)





Edit 3: Quellcode online!
http://dl.dropbox.com/u/1020997/Implementierungstest%20CubeCrypt%20und%20Bench%200.92.zip

Anleitung zu den Funktionen (oder siehe Controlls.h auf Englisch):

Viele Optionen habe ich im Benchmark unsichtbar gemacht, damit niemand versehentlich die Benchmarkergebnisse beeinflusst.

Cube Size: Kantenlänge der Würfel
Cube Count: Anzahl der Würfel, auf die die Codepage 437 aufgeteilt wird
OverCubing: Anzahl der Kopien pro Würfel, damit gleiche Buchstaben parallel verschlüsselt werden können. Da sich die Würfel im Laufe der Verschlüsselung ständig verändern, kann maximal 1 Thread allein an einem Würfel herumwerkeln. Ansonsten wären die Resultate absolut unvorhersehbar.

Die Anzahl an Threads ist demnach: Cube Count * OverCubing (im Benchmark auf 4 * 2 eingestellt).

Key: Verändert die Art der Aufteilung der Buchstaben und die Verteilung innerhalb der Würfel

Benchmark-Mode: Deaktiviert den Zufallsgenerator für Startposition und -winkel beim Verschlüsseln, damit das Programm immer exakt gleich abläuft.


Background-Modus: Man kann die Verschlüsselung starten und theoretisch ganz normal weiter im Programm arbeiten, ohne dass sich alles aufhängt. Mit Cubemanager::Join() kann man das Programm anschließend wieder synchronisieren und es wird gewartet, bis die Verschlüsselung / Entschlüsselung abgelaufen ist.

PreCrypt: Während die Würfel erstellt werden, wird abhängig vom Key ein einzelner Verschlüsselungsvorgang gestartet, wodurch die Würfel sich nochmals verändern. Das habe ich im Bench deaktiviert, da die Verschlüsselung in diesem Fall nur auf einem Kern läuft und das Ergebniss beeinflusst worden wäre.


EDIT 4: VERSION 0.92 ONLINE!!!

Known Issues:
Leider stürzt das Programm mit eingeschalteter Rekusion ab, wenn man mit einem Cube Count von weniger als 4 arbeitet. Aus Performancegründen musste ich diesen aber leider so tief einstellen. :( Der Recursive-Modus funktioniert also leider nicht mehr zum Benchen. :(

EDIT 5: VERSION 0.92 Beta2 ONLINE!!!

Änderungen: Verbesserte Erkennung der CPU-Kerne.
Wer Probleme beim Erkennen der richtigen Anzahl an CPU-Kernen hatte, sollte mit dieser Version den Test evtl. wiederholen. Für alle anderen wird es keine Unterschiede geben.

EDIT 6: ENDLICH NEUE BESTENLISTEN!!!















































Ich werde versuchen, diese künftig regelmäßig Up2Date zu bringen. :)

EDIT 7: BUGFIX :(

Ich habe gerade bemerkt, dass mir ein total doofer Fehler unterlaufen ist. :(
Ich habe mich gewundert, weshalb die 0.92 Beta2 etwas kleiner ist als die 0.92 Beta und habe den QuellCode für die ältere Version erneut kompiliert, einmal auf meinem PC und einmal auf meinem Laptop. Mein Laptop hat aus irgendeinem Grund größere Dateien ausgespuckt als mein PC, trotz identischer Compilereinstellungen! :wow: Auch leistungsmäßig ergeben sich teils große Unterschiede: Die Version, die auf dem Laptop kompiliert wurde, läuft allgemein etwas schneller, bis zu 5 Sekunden ohne MultiThreading und bis zu 0,5 Sekunden mit MultiThreading. Letzten Endes habe ich bemerkt, dass ich auf dem PC noch Visual Studio 2008 OHNE SP1 verwende, auf dem Lappy ist es jedoch bereits installiert. :(
Ich hoffe, ihr hasst mich jetzt nicht deswegen. :/ Ich werde das SP1 nachinstallieren und dann die Beta 2 erneut kompilieren.
Wie gesagt ist mir ein total dummer Fehler unterlaufen. :(
Ich habe die Beta2 erneut mit dem SP1 kompiliert und habe den Fehler des älteren Compilers ausgemerzt, der ausschließlich Nutzer der 0.92 Beta2 betroffen hat.

Ich bitte vielmals um Verzeihung für diese Fahrlässigkeit. :/


Im Anhang findet ihr fortan nur noch die Beta2R (Recompiled).
 

Anhänge

  • CubeCrypt-Benchmark 0.92 Beta2R.zip
    580,6 KB · Aufrufe: 139
Zuletzt bearbeitet:
AW: Eigener Benchmark: CubeCrypt! Bitte testen und Performance mitteilen!

Habs mir grad geladen und teste auch gleich...
Wenn hier genug Interesse bekundet wird, erstelltst du dann eine Highscore-Liste ?

3dit:

Ich hab Win7 x64 auf dem Sys laufen :

I5 2500K | GTX 570 Phantom | AsusP8P67 | 8GB DDR3 |

Hier die Ergebnisse vom Benchmark-Modus :

Benchmark ohne "MultiCPU" - und ohne "Rekursiv" - Option: 75.38 sekunden
Benchmark ohne "MultiCPU" - und mit "Rekursiv" - Option: 75.81 sekunden
Benchmark mit "MultiCPU" - und ohne "Rekursiv" - Option: 23.89 sekunden
Benchmark mit "MultiCPU" - und mit "Rekursiv" - Option: 25.85 sekunden

Ansonsten, soweit ich es beurteilen kann:
Saubere Arbeit, der letzte Test hat es geschafft meinen Prozzi kurzzeittig komplett auszulasten ^^
 
Zuletzt bearbeitet:
AW: Eigener Benchmark: CubeCrypt! Bitte testen und Performance mitteilen!

Wär super C:
Vor allem der Übersicht wegen...

Hab jetzt meine Ergebnisse in den vorherigen Post reineditiert...
 
AW: Eigener Benchmark: CubeCrypt! Bitte testen und Performance mitteilen!

Hier die Ergebnisse vom Benchmark-Modus :

Benchmark ohne "MultiCPU" - und ohne "Rekursiv" - Option: 75.38 sekunden
Benchmark ohne "MultiCPU" - und mit "Rekursiv" - Option: 75.81 sekunden
Benchmark mit "MultiCPU" - und ohne "Rekursiv" - Option: 23.89 sekunden
Benchmark mit "MultiCPU" - und mit "Rekursiv" - Option: 25.85 sekunden

Sind das die Gesamtzeiten oder nur die der Verschlüsselung?

Ansonsten, soweit ich es beurteilen kann:
Saubere Arbeit, der letzte Test hat es geschafft meinen Prozzi kurzzeittig komplett auszulasten ^^

Danke für das Lob. :D Ganz ohne ein paar Threads im C++-Forum hätte ich das ganze aber auch nicht geschafft. ;)
Hast du eigentlich SMT aktiviert oder deaktiviert?
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Ich habe immer die Gesamtzeit angegeben...
Wenn es interessiert kann ich auch jeweils die einzelnen Zeiten für den Vorgang angeben C:

SMT...
Soweit ich weiß unterstützt der 2500K das nicht, erst der 2600K hat dieses Feature.
Weil ich's grad seh, mein Prozzi taktet mit 3300Mhz, schöne Liste übrigens... ^^
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Benchmark ohne "MultiCPU" - und ohne "Rekursiv" - Option: 65,816 sekunden
Benchmark ohne "MultiCPU" - und mit "Rekursiv" - Option: 65,973 sekunden
Benchmark mit "MultiCPU" - und ohne "Rekursiv" - Option: 19,017 sekunden
Benchmark mit "MultiCPU" - und mit "Rekursiv" - Option: 19,188 sekunden


CPU ist auf 4GHz getaktet. Alle Features (SMT, HT etc. an)

| Legacyy | I7 2600K (4 GHz) | 8GiB | 19,017 (R,M)
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Hoffe ich hab das so richtig gemacht

Mit MultiCpu Support, ohne Rekursiv:
Gesamtzeit = 18,05
Mit MultiCpu Support, mit Rekursiv:
Gesamtzeit = 17,971
Ohne MultiCpu Support, ohne Rekursiv:
Gesamtzeit = 62,322
Ohne MultiCpu Support, mit Rekursiv:
Gesamtzeit = 62,354
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Hoffe ich hab das so richtig gemacht

Mit MultiCpu Support, ohne Rekursiv:
Gesamtzeit = 18,05
Mit MultiCpu Support, mit Rekursiv:
Gesamtzeit = 17,971
Ohne MultiCpu Support, ohne Rekursiv:
Gesamtzeit = 62,322
Ohne MultiCpu Support, mit Rekursiv:
Gesamtzeit = 62,354

Dabei gibt es kein richtig oder falsch, solang das Setup und die Gesamtzeit ersichtlich ist. ;)

PS: Stimmt die Taktangabe aus deiner Signatur?
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Benchmark ohne "MultiCPU" - und ohne "Rekursiv" - Option: 64,693 Sekunden
Benchmark ohne "MultiCPU" - und mit "Rekursiv" - Option: 64,537 Sekunden
Benchmark mit "MultiCPU" - und ohne "Rekursiv" - Option: 19,827 Sekunden
Benchmark mit "MultiCPU" - und mit "Rekursiv" - Option: 19,688 Sekunden

Alle Zeiten sind Gesamtzeiten

| Toffelwurst | Phenom II X6 1100T @ 3,3GHz | 16GB |
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Die Ergebnisse werden fortan separat nach SingleThread und MultiThread sortiert!
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Jap stimmt.. Warum..?

Wollte nur wissen, ob der Wert korrekt ist.


Interessant finde ich soweit, dass der X6 auf einem Kern schneller ist als der I5-2600K bei höherem Takt. :wow: Das hätte ich so nicht erwartet...
Als Compiler kam bei der ganzen Sache lediglich der vom Visual Studio 2008 SP1 zum Einsatz.

Interessant wäre, wie sich die Werte verschieben, wenn ich das ganze mal durch den Intel-Compiler jage... Weiß einer, wo ich den bekommen kann und ob der zu VC++ 2008 SP1 kompatibel ist?
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Phenom II X4 955 BE @ 3842 / 14,5 x 265 / 4GB RAM @ 706 Mhz CR 1T

Benchmark ohne "MultiCPU" - und ohne "Rekursiv" - Option: 61,573 Sekunden (Verschlüsselung: 61,464 => Hinweis Ohne Rückmeldung lief der Benchmark durch)
Benchmark ohne "MultiCPU" - und mit "Rekursiv" - Option: 60,856 Sekunden (Verschlüsselung: 60,474 => Hinweis Ohne Rückmeldung lief der Benchmark durch)
Benchmark mit "MultiCPU" - und ohne "Rekursiv" - Option: 19,017 Sekunden (Verschlüsselung: 18,923)
Benchmark mit "MultiCPU" - und mit "Rekursiv" - Option: 18,533 Sekunden (Verschlüsselung: 18,423)
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Hm,

Amd-Prozessoren scheinen bei solchen Aufgaben ein wenig potenter zu sein als die von Intel... :D
Jetzt werd ich schon von einem PII X4 955 geschlagen ^^

Morgen takte ich meinen ein bischen rauf...
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Ich denke die machen wir nass.. Könnte mal zum WE versuchen den auf 4,6 stable zu bekommen, denke da siehts nochmal anders aus.. ;)
 
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!

Und ich bin vom Freitag bis Sonntag in Hamburg auf Messe da wird nichts mit 4Ghz zumal mein PC die 4 meist nicht stable hin bekommt.
Aber ich vermute das sieht dann schlecht aus für uns ;)
 

Anhänge

  • cube bench.png
    cube bench.png
    66 KB · Aufrufe: 112
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen!


Danke, das schau ich mir mal an. ^^

@Thread:

Danke soweit für die Teilnahme an alle. Anscheinend geht jetzt das AMD vs Intel Derby los. :D

Woran das liegen kann, dass die Intels bei einem einzelnen Thread hinter die AMDs zurückfallen, kann ich mir nun eigentlich nicht erklären. ^^
Hat hier irgendjemand richtig viel Ahnung vom Programmieren mit C++ und allem was dazugehört? Der könnte ja mal über den Code schauen (ich will das Prog unter GPL stellen) und sagen, was er von meinem Machwerk hält. ^^

PS: Vielleicht mag ja PCGH mein Programm absofort für Benchsessions verwenden? :D Offensichtlich ist es vieeel besser geeignet als SuperPi. :D
 
Zurück