AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code/Schleife extrem langsam

Offene Frage von "wth"
Ein Thema von wth · begonnen am 14. Jun 2009 · letzter Beitrag vom 14. Jun 2009
Antwort Antwort
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Code/Schleife extrem langsam

  Alt 14. Jun 2009, 19:44
Hi,

Ich habe mir folgenden Code gebastelt, um eine Reihe von IP-Adressen zu generieren.
Es funktioniert, aber die Schleife läuft extrem langsam.
z.B die Generierung von 127.0.0.1 - 127.0.0.254 dauert einige Sekunden!

Woran könnte das liegen?

Delphi-Quellcode:
var
  I: Integer;
begin
  for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
    listbox1.items.Add(string(inet_ntoa(TInAddr(htonl(I)))));
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 19:51
Hallo,

das kannst du ohne Profiler auch selbst heraus bekommen


Original:
Delphi-Quellcode:
for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
    listbox1.items.Add(string(inet_ntoa(TInAddr(htonl(I)))));

ListBox-Problem ?
Delphi-Quellcode:
for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
begin
end;
inet_ntoa-Problem ?
Delphi-Quellcode:
for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
begin
  listbox1.items.Add('1'(;
end;

usw.



Heiko
Heiko
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 19:53
Delphi-Quellcode:
var
  I: Integer;
begin

  listbox1.Items.BeginUpdate;

  for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
    listbox1.items.Add(string(inet_ntoa(TInAddr(htonl(I)))));

  listbox1.Items.EndUpdate;
end;
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 19:54
Versuch doch mal folgendes...
Delphi-Quellcode:
var
  I: Integer;
begin
  ListBox1.Items.BeginUpdate;
  try
    for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
             ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
    begin
      ListBox1.Items.Append(string(inet_ntoa(TInAddr(htonl(I)))));
    end;
  finally
    ListBox1.Items.EndUpdate;
  end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 19:54
Zitat von NamenLozer:
Delphi-Quellcode:
var
  I: Integer;
begin

  listbox1.Items.BeginUpdate;

  for I := ntohl(inet_addr(PAnsiChar(AnsiString(edit1.text)))) to
           ntohl(inet_addr(PAnsiChar(AnsiString(edit2.text)))) do
    listbox1.items.Add(string(inet_ntoa(TInAddr(htonl(I)))));

  listbox1.Items.EndUpdate;
end;
Wäre die Lösung wenn die ListBox die Performancebremse ist
Markus Kinzler
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 20:01
Hallo und danke für die Antworten.

Ich habe nun herausgefunden, dass es definitiv am inet_ntoa() liegt.
Begin/EndUpdate bringt erst etwas bei sehr vielen Einträgen, aber der Code braucht ja schon für gerade mal 254 IPs einige Sekunden.

Da stimmt doch was nicht. Läuft die Schleife bei euch denn auch so langsam? evtl. liegts ja an meinem PC.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 20:03
Versuch es mal mit 4 Schleifen ( pro IP-Gruppe)
Markus Kinzler
  Mit Zitat antworten Zitat
wth

Registriert seit: 17. Sep 2008
43 Beiträge
 
RAD-Studio 2009 Arc
 
#8

Re: Code/Schleife extrem langsam

  Alt 14. Jun 2009, 20:06
Zitat von mkinzler:
Versuch es mal mit 4 Schleifen ( pro IP-Gruppe)
So würde es natürlich gehen, aber ich würde es gerne mit den winsock Funktionen machen, damit ich mich um die Zerlegung der IPs nicht mehr kümmern brauche.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz