McSaesch Geschrieben 10. August 2005 Geschrieben 10. August 2005 Tach Ich habe in meiner grenzenlosen Langeweile ein kleines Programm geschrieben welches mir alle möglichen IP's generiert. Die Summe beläuft sich auf 255 hoch 4, wobei 0 mitgezählt wird, also es 256 Zeichen sind. Nun habe ich soweit alles fertig jedoch schockt mich etwas die Rechenzeit. Bei einem Test (15 als Basis nicht 255) hat er genau 40 min gebraucht. Dabei handelt es sich gerade mal um 65536 Möglichkeiten. Legt man das auf die 255 um, und errechnet die Zeit, komme ich auf folgendes Ergebnis: 2621440 min!!!!!! Was ja immerhin 4,9 Jahre sind. Nun Frage ich mich ob ich mich da verrechnet habe, bzw. ob es jemanden gibt der mir helfen kann. Denn 5 Jahre warten nur wegen 4,3 Mrd Ausgaben ist doch echt zu lang. Also hat jemand eine Idee?? :confused: Zitieren
Amstelchen Geschrieben 10. August 2005 Geschrieben 10. August 2005 mir erschliesst sich in mehrfacher hinsicht nicht der sinn der sache, da ohnehin nicht jede ip-adresse nutzbar ist. und der grund warum die ausgabe solange dauert, ist wahrscheinlich der, dass du die ausgabe irgendwohin (in einen buffer) schreibst, und ab irgendeinem zeitpunkt dann voller und voller wird und die generierung verzögert. nur geraten, nachdem du das mit basic machst und die ausgabe nicht nach /dev/null schiebst. s'Amstel Zitieren
McSaesch Geschrieben 10. August 2005 Autor Geschrieben 10. August 2005 Also..... 1. der Sinn Naja, dann hab ich alle theoretischen IPs in einer Datei, kann sie ausdrucken und mir an die Wand hängen, etc. Es war ein Hirngespinnst meiner Langenweile das sich nun zu einem Projekt gemausert hat, das ich abschliessen möchte. 2. Speichern Ich kann mit einer Variablen angeben nach wieviel Durchgängen er die Datei speichern soll und die "Merk"variable (mit den berechneten IPs ) wieder leert. So dass ich am Ende eine grosse Datei habe, die aus mehreren Teilstücken zusammen gespeichert wurde. Meine CPU ist auch fleissig bei 100% aber der Faktor Zeit macht mir halt zu schaffen und wenn es da ne schnellere Alternative gibt, immer her damit. Zitieren
Gast Quark Geschrieben 11. August 2005 Geschrieben 11. August 2005 Also..... 1. der Sinn Naja, dann hab ich alle theoretischen IPs in einer Datei, kann sie ausdrucken und mir an die Wand hängen, etc. Es war ein Hirngespinnst meiner Langenweile das sich nun zu einem Projekt gemausert hat, das ich abschliessen möchte. [OT] Rechne doch mal aus, wieviel Papier und Drucker"tinte" du dafür brauchst [/OT] Zitieren
jasso Geschrieben 11. August 2005 Geschrieben 11. August 2005 an eine so große datei anzuhängen dauert allerdings auch seine zeit. Zitieren
Enno Geschrieben 11. August 2005 Geschrieben 11. August 2005 irgendwas ist bei dir falsch. dieses Perl Script: open (DATEI, ">ip.txt") ||die "error!"; for ($a=0; $a <= 255; $a++) { for ($b=0; $b <= 255; $b++) { for ($c=0; $c <= 255; $c++) { for ($d=0; $d <= 255; $d++) { print DATEI $a, ".", $b, ".", $c, ".", $d, "\n"; } } } } close(DATEI); braucht für den Bereich: 0.0.0.0 bis 0.32.255.255 genau: 0:00:15,23 Stunden. Also 15 Sekunden und 23 hundertstel. die Datei hat dann: 2162688 Zeilen und eine Größe von: 27.763.712 Bytes von 0.0.0.0 bis 255.255.255.255 sind es 8*255 soviele daten. also würde das Script: 8:39:51,04 Stunden Die Datei hätte dann: 4429185024Zeilen und wäre: 56860082176 Bytes gross. Also ca. 53GB gross. Das wären: 63274072 Blätter auf einem Nadeldrucker (á 70 Zeilen) das entspricht 63275 Kartons á 1000 Blatt das sind ca. 790925,9 Kg (1 Karton á 1000 Blatt = 12,5Kg) Also brauchst du zum ausdrucken 790 TONNEN Papier. Also spinnerte Idee. Nur mal so zum Spass. Zitieren
Gast Quark Geschrieben 11. August 2005 Geschrieben 11. August 2005 Das wären: 63274072 Blätter auf einem Nadeldrucker (á 70 Zeilen) das entspricht 63275 Kartons á 1000 Blatt das sind ca. 790925,9 Kg (1 Karton á 1000 Blatt = 12,5Kg) Also brauchst du zum ausdrucken 790 TONNEN Papier. :bimei geil du hast es echt gemacht. :uli Zitieren
Enno Geschrieben 11. August 2005 Geschrieben 11. August 2005 Apropo Tinte: auf unserem HP LJ 4300 Je Toner 20000Seiten: würden das 3164 Toner sein. Diese würden (aktuell 1 Toner á 78,04€) 246918,56€ kosten. Ein doch etwas kostpieliges Unterfangen. Ach ja das Papier würde (aktuell bei mir 1 Karton á 1,79€) 113262,25€ kosten. (So kaufen wir es gerade ein.) und noch was zum ausdrucken: HP LJ 4300 = 48 Seiten pro minute = 1318210 Minuten = 915 Tage 10 Stunden 10 Minuten. :marine :marine :marine Zitieren
Gast Quark Geschrieben 11. August 2005 Geschrieben 11. August 2005 Wenn die Angabe stimmt, das wir 63274072 Blätter brauchen: 21cm * 29,7cm = eine DIN-A4 1.328.755.512 cm * 1.879.239.938,4 cm = alle DIN-A4 Seiten zusammen 13.287.555,12 m * 18.792.399,384 m 132.875 km * 187.932 km (jeweils die Kommabeträge abgeschnitten) Die Wand muss also demnach mindestens hundertsiebenundachzigtausendneunhundertdreiundzwanzig Kilometer lang und einhundertzweiunddreissigtausendachthundertfünfundsiebzig Kilometer hoch sein. Wenn du so ein Zimmer findest, sag mir bescheid /edit: wir sehn schon, hierbei handelt es sich um ein wahres Lebenswerk. Zitieren
Enno Geschrieben 11. August 2005 Geschrieben 11. August 2005 du hast nen Fehler. Du hast höhe und breite mal die Seitenzahl. Du hast aber nur eine Richtung alle Blätter. Allso alle Blätter aneinander geklebt würde eine Strecke von 21cm Breite und 187.932km Länge ergeben. Zitieren
McSaesch Geschrieben 11. August 2005 Autor Geschrieben 11. August 2005 for a=1 to 256 for b=1 to 256 for c=1 to 256 for d=1 to 256 ip= a+b+c+d next so in etwa sieht in Kurzform mein Prog aus. Auch lass ich immer mehrere Möglichkeiten hintereinander legen. Ich bin jedoch sehr beeindruckt wieviel Tinte und Blätter ich bräuchte. Und wenn ich an der Schriftgröße etwas bastele kann man da auch Raum gut machen. Aber wieso eigentlich 8*255?? Wären es nicht 256 hoch 4???? Zitieren
Enno Geschrieben 11. August 2005 Geschrieben 11. August 2005 (0.0.0.0 bis 0.32.255.255) * 8 * 255 = Gesamtzahl du hast schon Recht mit dem 256^4 Wobei die IP ja nicht a+b+c+d ist. Das ist eine Rechneoperation. Kann es sein, das du dadurch viel Zeit verlierst. Denn die Zeitunterschiede sind ja schon eklatant. 4,9 Jahre bei dir zu 8,xx Stunden bei mir. Zitieren
McSaesch Geschrieben 11. August 2005 Autor Geschrieben 11. August 2005 is mir schon klar die ausgabe ist etwa so: IP=IP+str(a)+str(+str©+str(d) Zitieren
Enno Geschrieben 11. August 2005 Geschrieben 11. August 2005 also sowas wie ich oben auch geamcht habe. dann wäre aber der unterschied im Tempo Perl <-> Basic mehr als Extrem. 8,9h <-> 4,9 Jahre. Also ist Perl ca. 4822 mal so schnell wie Basic. Krasse Geschichte. Zitieren
McSaesch Geschrieben 11. August 2005 Autor Geschrieben 11. August 2005 ich kanns mir echt nicht vorstellen warum das so langsam sein soll ich hab doch bloss 4 schleifen, und jedesmal wird eine zahl zu einer variablen dazu addiert, und alle 10000 schritt wir abgespeichert und die temporäre datei geleert @Enno kannst du nicht ein kleines Proggi basteln so mit ausgabe in txt und das posten, weil ich hab keinen plan von perl Zitieren
baba007 Geschrieben 11. August 2005 Geschrieben 11. August 2005 irgendwas ist bei dir falsch. dieses Perl Script: open (DATEI, ">ip.txt") ||die "error!"; for ($a=0; $a <= 255; $a++) { for ($b=0; $b <= 255; $b++) { for ($c=0; $c <= 255; $c++) { for ($d=0; $d <= 255; $d++) { print DATEI $a, ".", $b, ".", $c, ".", $d, "\n"; } } } } close(DATEI); braucht für den Bereich: 0.0.0.0 bis 0.32.255.255 genau: 0:00:15,23 Stunden. Also 15 Sekunden und 23 hundertstel. die Datei hat dann: 2162688 Zeilen und eine Größe von: 27.763.712 Bytes von 0.0.0.0 bis 255.255.255.255 sind es 8*255 soviele daten. also würde das Script: 8:39:51,04 Stunden Die Datei hätte dann: 4429185024Zeilen und wäre: 56860082176 Bytes gross. Also ca. 53GB gross. Das wären: 63274072 Blätter auf einem Nadeldrucker (á 70 Zeilen) das entspricht 63275 Kartons á 1000 Blatt das sind ca. 790925,9 Kg (1 Karton á 1000 Blatt = 12,5Kg) Also brauchst du zum ausdrucken 790 TONNEN Papier. Also spinnerte Idee. Nur mal so zum Spass. wer-hat-mehr-langeweile-Kampf und mein Favorit ist Enno mit seinen wilden Blattideen und Rechnungen :uli Zitieren
nic_power Geschrieben 11. August 2005 Geschrieben 11. August 2005 Hallo, warum so kompliziert? int main() { unsigned int ip; for (ip=0; ip<=4294967295; ip++) printf("ip=%u\n", ip); } Nur für v4, keine Prüfung ob die IP-Adresse auch gültig ist (Broadcast-Adressen, usw.) und an der Text-Darstellung kann auch noch gearbeitet werden Nic Zitieren
McSaesch Geschrieben 11. August 2005 Autor Geschrieben 11. August 2005 Thx für die Hilfe aber das Script sagt mir leida gar nix Und wenn es kompliziert geht warum soll ich dann den einfachen Weg gehn?? Trotzdem Thx also wie kann ich das Script compilieren??? Zitieren
geloescht_JesterDay Geschrieben 12. August 2005 Geschrieben 12. August 2005 Trotzdem Thx also wie kann ich das Script compilieren??? Für das Perl-Script brauchst du den Perl Interpreter und das oben sieht nach C aus. Hast du schon daran gedacht, das ganze IP-v6 fähig zu machen? Ich bin noch auf der Suche nach neuen Tapeten für unsere Stadt Zitieren
Maulwurf_der_Schlaue Geschrieben 12. August 2005 Geschrieben 12. August 2005 moin, ich hab so das gefühl damit könnte man denn mond zupflastern (IPv6) oder doch die Erde?? wie war das gleich... also hexdarstellung dann mit : getrennt... aber wieviele stellen war das gleich wieder 6 gruppen a 2 stellen? also von 00:00:00:00:00:00 bis FF:FF:FF:FF:FF:FF oder irre ich mich da? Zitieren
McSaesch Geschrieben 12. August 2005 Autor Geschrieben 12. August 2005 Also das ganze auch noch v6-fähig? Hmmm... Hat einer ne gute Verbindung zu HP oder andere Druckerhersteller, ich könnte da einen neuen Hardware-Dauertest anbieten, dann gibt's bald ne neue Einheit, neben Blatt/s ganz neu IPv4/Jahre. Ich denke wenn ich v4 erstmal ein vernünftiges Ergebnis habe, und darauf nicht Jahre warten muss werde ich v6 in Angriff nehmen, Versprochen. :bimei Woher krieg ich den Perl Dingens?? :confused: Zitieren
Maulwurf_der_Schlaue Geschrieben 12. August 2005 Geschrieben 12. August 2005 hab das ganze mal in c gecodet... Compiliert und Ausgeführt in Dev-C++ 4.9.9.2 Ergebnis kann auch in datei umgeleitet werden Misst die Zeit... (nur Quellcode als anlage) [edit:] am letzten tach vorm urlaub ist mir auch immer langweilig... da bekommt man keine programmierarbeiten mehr... also einfach quellcode genießen.. und evtl. optimieren :) [:edit]IPv4.txt Zitieren
Maulwurf_der_Schlaue Geschrieben 12. August 2005 Geschrieben 12. August 2005 Hi, also mein programm lief jetzt glaub ich 1,5 std.. hab jetzt abgebrochen... jetzt hab ich ein problem: wie öffne ich eine 1,13GB doc-File? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.