eine kleine Frage...
-
hmm gibts keine andere möglichkeit ?^^
ich mein gibst da nicht einfach iein vorwort vor der funktion ?
z.B. "permanent void run()"
klar permanent gibnst nch aber müsste sowas nich dieses tolle c# zu bieten haben ?
mfg
-
Nimm einem Timer und lass deine Funktion von diesem Timer aufrufen.
-
jaa soweit war ich auch schon, aber wie ich in meinem letzten Thread gehört habe, wird der timer maximal alle 15ms aufgerufen(auch mit dem intervall 1ms), was für meine zwecke zu langsam ist!!!!
mfg FX
-
Foxx90 schrieb:
also, soweit ich weiß werden ja alle befehle (Quelltext) von oben nach unten ausgeführt oder ?
Nein, mag für manche interpretierte Sprachen noch stimmen, aber sobald ne Sprache sowas wie Funktionen bietet stimmt das schon nicht mehr.
Foxx90 schrieb:
So das passiert soweit ich weiß ein paar tausend mal in der sekunde .. odeR ?
Siehe oben - nein, oder siehst du da irgendwo ne Schleife wo alles drin ausgeführt wird?
Windows Programme verwenden zwar ne MessageLoop die andauernd durchlaufen wird, aber den größten Teil der Zeit wartet dein Windows Programm.Foxx90 schrieb:
aber es werden bei diesen "durchgängen" ja nur die sahcen ausgeführt,die auch ausgefürht werden sollen, also wird z.B. ein Button1_Event nicht einfach zwischendurc ausgefürht, sondern erst wenn man ihn drückt ...
Deshalb heißt das Ding Event! Events werden bei bestimmten Ereignissen ausgelöst und erst dann wird auch der entsprechende Code ausgeführt.
Ist nicht böse gemeint, aber was so einen allgemeinen Prorgammablauf angeht, hast du arg falsche Vorstellungen.
Zu deinem eigentlichen Problem: nen Timer ist die Lösung dazu, aber das der die nicht von dir geforderte Auflösung bietet ist kein Problem der Sprache C# sondern eins von Windows! Windows ist nunmal kein Echtzeitbetriebssystem.
Was willst du denn überhaupt jede Millisekunde machen? Das sind so kurze Zeiten dass du da, selbst wenn du so einen genauen Timer hättest, kaum Befehle drin ausführen könntest.
-
also, erstmal @ Talla:
FoX != OOP^^:D:D
Komme immernoch nicht gut klar mit der OOP ! Hatte zuvor ca. 1Jahr WinAPI gemacht...und das ist ja etwas anders :D^^naja also was will ich mit soooo wenig millisekunden machen :
Ich schreibe ein PAsswort Knacker :D^^
Und wenn man nur 67 wörter in der Sekunder schafft ist das reichlich wenig^^
Ich denke ich werde auf ne SChleife zurückgreifen(Konsole Win32)
Denn mir ist aufgefallen, dass Konsolen Programme viel schneller sind (Schleifen)
Wennman immer eine zahl dazuaddiert und sie mit cout andauernd ausgeben lässt, und das extakt eine Sekunde lang, dann erhält man ca die Zahl 40000
^^...mfg
-
Viel Spaß beim Cracken...
P.S.
Endlosschleife mit "while(true) { ... }"
-
wenn du unbedingt wahnsinnig schnell sein willst, wozu gibts Assembler
Und da du ein Passwort knacken willst, sei nur kurz angemerkt, wenn du ein Passwort im internet (einer Website/ eines Servers) knacken willst, hast du sowieso immer (je nach Internetverbindung und Servergeschwindigkeit) eine Verzögerung und es kann gut sein, dass er mehr als 15 ms braucht um deine Anfrage zu bearbeiten und dir zurückzuliefern, ob du erfolgreich drin bist, oder net ...
So außerdem haben viele Server n Schutz drin, dass sie den Account bei beispielsweise 3 Fehlversuchen für meinetwegen ne halbe Stunde sperren.Ach übrigens, die meisten Server (mit wichtigen Daten) loggen mit, wer sich unter welcher IP-Adresse wann anmeldet, gut möglich, dass dann der Wagen mit dem rotierenden blauen Licht aufm Dach dann vor deiner Haustür hält
Wenn du allerdings das Passwort deiner Schwester knacken willst, um ihre Fotos anzuschauen, lad dir ne Linuxdistribution runter, boote von CD und kopier die Daten, damit sparste dir viel Zeit und Arbeit
-
ARG :D^^
schon ok^^
hab verstanden
mfg
-
looool
da kennt sich einer aus, hm?
-
*rofl*
Konsolenprogramme sind nicht schneller. Nur da hast du halt ne Schleife die einfach durchläuft und keinen Timer mit ner bestimmten Auflösung. In ner Windows Forms Anwendung könntest du genauso gut in ner Funktion so eine Schleife laufen lassen und die Geschwindigkeit würde nur von deinem PC abhängen.
Aber der Rest hört sich lustig an. Wenn du wirklich Wörter bei ner Website z.b. ausprobieren willst, da hat Checker&Murckser ja schon was zu gesagt. Die Antwortzeiten sind viel zu lang beim Internet, da würde selbst nen Timer mit 20ms zu schnell sein. Dein Code den du in der Schleife ausführst, dürfte dann auch nie länger dauern als ne ms wenn du nen ms Timer haben willst, und da kann man nicht viel machen.
-
kenn halt einige die nen eigenen Webserver haben und die machen das auch so ...
nicht, das da jemand was falsches von mir denkt
-
Talla schrieb:
*rofl*
Konsolenprogramme sind nicht schneller. Nur da hast du halt ne Schleife die einfach durchläuft und keinen Timer mit ner bestimmten Auflösung. In ner Windows Forms Anwendung könntest du genauso gut in ner Funktion so eine Schleife laufen lassen und die Geschwindigkeit würde nur von deinem PC abhängen.
NEIN! eben nicht... entweder du hast es noch nich ausprobiert oder du weißt es nicht! Ich hab es eben ausprobiert, sdonst würde ich sowas nicht schreiben!
SChleife mit Konsole ist VIEL schneller als ne SCHLEIFE mit WIndows Forms!!!
probiers aus!mfg
-
Ich würde eher sagen du probierst es aus. Hab dir hier: http://www.csharp-pro.de/ccount/click.php?id=4
mal nen Beispielprojekt hingepackt. Des einzigste was die Anwendung macht ist ne Variable 100 Millionen mal zu erhöhen - dauert nen bissle, bei mir um die 5 Sekunden - ist halt nur Debugmodus. Wie dem auch sei. Sowohl in der Konsolenanwendung, als auch in der Windows Formsanwendung braucht des gleich lang! Warum sollte es auch in der Windows Forms Anwendung länger dauern?public class Test { public static TimeSpan LongTest() { DateTime start = DateTime.Now; int dummy = 0; for (int i = 0; i < 1000000000; i++) { dummy++; } DateTime end = DateTime.Now; return end - start; } }
Das ist der Testcode und der wird einmal in der Konsoleanwendung aufgerufen:
Console.WriteLine(Test.LongTest());
als auch in der Windows Forms Anwendung:
label1.Text = Test.LongTest().ToString();
Und, oh Wunder, kommt doch das gleiche raus
EDIT: Upps, seh grad das es ja ne Milliarde Opps sind, nicht nur 100 Millionen, aber egal
-
Foxx90, bist du zufällig SPS-Programmierer?
-
also ok du hast das anders programmiert ...
ich hab das bei windows forms anders gemacht mom(hmm außerdem habe ich die konsolen anwendung in c++ geschrieben was aber nix am ergebnis ändern sollte):Windows Forms
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Runs { public partial class Form1 : Form { int dummy = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { for (decimal test = 0; test < 100000000; test++) { dummy++; } textBox1.Text = Convert.ToString(dummy); } } }
Also wenn ich dieses Programm ausführe, dauert es ohne Ende also ich hab zwar nur ein paar minuten gewartet aber ich denke das würde so weiter gehen...
Konsole
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int a = 0; for(int i = 0;i < 100000000;i ++)a++; cout << a << endl; system("PAUSE"); return 0; }
hier dauert es nur ein paar hundertstel sekunden...
also bestimmt mache ich was falsch, sacht mir doch bidde was^^
mfg
-
Man könnte fast meinen das ist Absicht...
Erstmal ist deine Konsolenanwendung unmanaged Code und deine Windows Forms Anwendung managed - das macht schon nen Unterschied aus. Was aber viel viel schlimmer ist, du verwendest decimal bei der Forms Anwendung als Datentyp und bei der Konsole nen int. Decimal ist nen 128 Bit Fließkommawert, sprich, auf ner 32 Bit CPU brauchst du schon 4 Taktzyklen um den Wert überhaupt in die CPU zu kopieren bevor dann die die FPU damit rechnen kann - Fließkommaberechnungen an sich sind aber nochmals langsamer auf normalen CPUs als einfache Ganzzahlberechnungen - kein Wunder das der Code also langsam ist. Du vergleichst also nicht Äpfel mit Birnen, sondern eher Äpfel mit Gänsen - sprich was total anderes...
Wenn du vergleichst, dann bitte auch einigermaßen objektiv. Wenn du den Code wie ich ihn geschrieben hab(nämlich für die Konsole und Forms Anwendung gleich), ausführst, dann siehst du das er jeweils gleich schnell ausgeführt wird, egal ob Konsole oder Windows Forms Anwendung.
Was du noch beachten musst: Guck was der Compiler wegoptimiert. Bei meinem Beispielprojekt sind beide mit Absicht im Debugmodus das der Compiler da nichts wegoptimiert. Im normalen Release werden die Schleifen nämlich einfach rausgeschmissen weil die zunichts gut sind, und dann ekomm ich auch in beiden Anwendungen als Laufzeit 0 für die Funktion.
-
aso, nagut dann werd ich das mal ausprobieren.
Aber glaub mir eins, ich schreib hier garantiert nicht iwas mit absicht falsch rein!
-
so habs jetzt ausprobiert, ok ihr hattet recht, also danke für die Beantwortung dieser wahrscheinlich dummen Fragerei^^
mfg