Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Internet Allgemein Flatrates, Webspace, Protokolle und alles rund ums Internet hier rein.

Socketprogrammierung

Diskussion: Socketprogrammierung im Forum Internet Allgemein, in der Kategorie Web, Network & Multimedia Palace; Anzeige Zitat: Zitat von Hackse die sich nur in Binärcode abbilden lassen (z.B. Kernelmodule). Sing# für Singularity ist Managed Code, ...

Like Tree3Likes

Antwort
Alt 18.01.12, 16:45   #16 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

Anzeige

Zitat:
Zitat von Hackse Beitrag anzeigen
die sich nur in Binärcode abbilden lassen (z.B. Kernelmodule).
Sing# für Singularity ist Managed Code, d.h. Bytecode, wird per VM interpretiert. Und der Kernel ist im Wesentlichen in Sing# geschrieben

Zitat:
Zitat von Hackse Beitrag anzeigen
Du kannst keinen performanten Bruteforcer (z.B. für MD5) in einer rein skriptbasierten Sprache abbilden
Pyrit, aktuell effizientester WPA/WPA2-Cracker... geschrieben in Python. Okay, cheatet, nutzt OpenCL
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 18.01.12, 17:08   #17 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Danke für den Link, mime.
Auch an diesem Beispiel sieht man sehr schön, dass skriptbasierte Webserver wie Tornado zurecht intern auf Binärcode (in diesem Falle von epoll) zugreifen um simultane Verbindungen möglichst performant zu verwalten (bei BSD ist es kqueue).
Zitat:
file /usr/lib/python2.6/dist-packages/twisted/python/_epoll.so
/usr/lib/python2.6/dist-packages/twisted/python/_epoll.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 17:10   #18 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Bitte kein Geflame über "real man" Programmiersprachen. Ihr könnt dazu gerne einen eigenen Thread aufmachen

OT:
Zitat:
Zitat von Hackse Beitrag anzeigen
EDIT:
Solltest Du der Ansicht sein, dass meine These hinsichtlich Performance und Skriptsprachen nicht korrekt ist, können wir einen Performance-Vergleich durchführen. Hierzu wird es eine rechenintensive Aufgabenstellung geben, die ich z.B. in Ansi-C löse und Du in einer beliebigen Skriptsprache. Dann können wir fundiert bewerten, ob die These korrekt ist oder nicht. :-)
Aber bitte => Programmieraufgaben Unterforum wartet auf Dich

Wobei man bedenken sollte, dass es in den "realen" Anwendungen oft genug nicht nur um reine Berechnungen geht (sondern auch Verarbeitung/Speicherung und "Zurverfügungstellung" von Input/Daten) und viele "Scriptsprachenbibliotheken" in C implementiert sind, so dass primitve Operationen auf diesen Datentypen (Hashmaps, Listen, Stringsuche usw) nur gewrapte Aufrufe der C-Bibliothek sind.
Reine Numbercruncher sind daher sowas wie "Microbenchmarks". Es wäre also schön, wenn es nicht nur einseitige "berechne Pi/Primzahl &Co" Aufgaben wären, sondern auch vielleicht "parse Datei X und gebe dazu irgendwelche Statistiken aus"

Ich würde im übrigen behaupten, dass ANSI-C auch bei weitem nicht so schnell ist. Wer real exisitierende MD5/SHA1 Bruteforcer anschaut:
Distracted: SHAbr update, I passed 60 Mhashes/s
sieht, dass der Code dank Macros quasi "Meta-Assembly" entspricht, bei dem der Compiler nur noch die jeweiligen XMM Register "frei" vergeben darf . Hierzu reicht es also bei weitem nicht aus, reines C/C++ "perfekt" zu beherrschen - man muss auch die jeweilige Hardwareplattform kennen (wieviele Register stehen zur Verfügung, wie lässt man den Compiler das am besten Parallelisieren usw.)

Allgemeines imho:
Man sollte immer zwischen "prinzipiell/theoretisch" und "praktisch/wie es tatsächlich ausschaut" unterscheiden . Um tatsächlich performante Programme zu schreiben, braucht man ein solides, abstraktes Hintergrundwissen über Algorithmen und Datenstrukturen sowie über die jeweilige Plattform (was bietet OS an Features, was bietet die Hardware und wie sage ich dem Compiler, dass er diese nutzen soll?).
In der Praxis sind Teile der "0815" C Anwendungen nicht selten langsamer als "0815" Pythonanumsetzung, einfach weil der C "Programmierer" meint, das Rad neu erfinden zu müssen und/oder unpassende Umsetzungen wählt (weil z.B die Datenstrukturen nicht in der Standardbibliothek vorhanden sind) und der Scriptsprachler einfach auf bestehende Bibliotheken zurückgreift ("Batteries included" - sei es HTTP Reader, XML-Parser oder Dictionaries/Sets, die auf einer soliden, getesteten usw. C Bibliothek basieren).
Speicherverwaltung ist ein Thema für sich - nur weil man den Speicher selber manuell alloziert und freigibt, wird das Programm dadurch nicht effizienter oder schneller (wie z.B ein while-Loop, der mittels recv Daten empfägt und dabei jedesmal den Buffer mittels realloc um 1 Byte erweitert )
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.

Geändert von CDW (18.01.12 um 17:23 Uhr) Grund: Rechtschreipunk und Formulierung
CDW ist offline   Mit Zitat antworten
Alt 18.01.12, 17:37   #19 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Code:
Sing# für Singularity ist Managed Code, d.h. Bytecode, wird per VM interpretiert. Und der Kernel ist im Wesentlichen in Sing# geschrieben
Mit "Kernelmodule" meinte ich Unix/Linux. Und dennoch ist der unterste Layer von Singularity teils in Assembler geschrieben. Bytecode wird zwar durch die VM interpretiert, ich gebe Dir Recht, ist jedoch bereits binär. Mit reinen Skriptsprachen meine ich also keine Mischformen (Java & co), sondern beziehe mich auf die Interpretation des textuellen Sourcecodes durch den Interpreter. Ich sehe schon, Du versuchst zu schummeln. Aber selbst wenn Singularity und Konsorten man richtig ausgereift sind, warten wir mal die Performance ab und schauen uns die Benchmarks an.
Zitat:
Pyrit, aktuell effizientester WPA/WPA2-Cracker... geschrieben in Python. Okay, cheatet, nutzt OpenCL
Pyrit verwendet nicht nur Binärcode zur Beschleunigung, sondern macht (z.B. via CUDA) auch Gebrauch von GPU um einen massiv-parallelen Algorithmus zu simulieren. Kannst ja mal versuchen so was in einem Shellskript mit der selben Performance abzubilden.
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 17:56   #20 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Zitat:
In der Praxis sind Teile der "0815" C Anwendungen nicht selten langsamer als "0815" Pythonanumsetzung, einfach weil der C "Programmierer" meint, das Rad neu erfinden zu müssen und/oder unpassende Umsetzungen wählt (weil z.B die Datenstrukturen nicht in der Standardbibliothek vorhanden sind) und der Scriptsprachler einfach auf bestehende Bibliotheken zurückgreift
Gerade in C hapert es an Funktionalitäten, z.B. verglichen mit Java oder Perl's CPAN. Da bleibt einem manchmal nix anderes übrig das Rad neu zu erfinden.

Der Performance-Vergleich zweier Sprachen sollte sich grundsätzlich auf identische Algorithmen beziehen. Wenig Sinn macht das Ganze z.B. wenn man in zwei Sprachen Algorithmen abbildet, die verschiedenen Komplexitätsklassen genügen und dann die Performance vergleicht. Es lassen sich also entweder identische Algorithmen in verschiedenen Sprachen vergleichen oder verschiedene Algorithmen in der selben Sprache (einfach um zwei Algos zu vergleichen, z.B. Heapsort vs. Quicksort). Eine Mischform aus beidem macht IMHO wenig Sinn.

Genug OT von mir für heute.
Hackse ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » Internet Allgemein » Socketprogrammierung
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Socketprogrammierung C,Problem mit accept() sw33tlull4by Code Kitchen 3 01.09.07 19:53
Socketprogrammierung mit Dev C++ - "ws2_32.lib" verlinken... link Code Kitchen 1 24.11.04 12:42


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61