Autor Beitrag
NeWsOfTzzz
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Di 26.10.04 21:26 
2 TB Festplatte
Mein Vorschlag: die Wahrheit sagen? ^^
Martin W Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 116



BeitragVerfasst: Di 26.10.04 21:33 
NeWsOfTzzz hat folgendes geschrieben:
2 TB Festplatte
Mein Vorschlag: die Wahrheit sagen? ^^


sry, 1 TB... :oops:

4 Festplatten á 250 GB in Raid geschalten.
NeWsOfTzzz
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Di 26.10.04 21:36 
Selbst dann isses immer noch net 1 TB festplatte hehe ^^ Aber mit meinem PC hab ich mal mit nem FTP Scanner 2000 Threads/Connections gehabt und ca 200 FTP´s pro Sekunde gescannt.. Wenn ich über 2000 eingestellt habe wurde das nur langsamer ^^.. habe 2400+
Martin W Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 116



BeitragVerfasst: Di 26.10.04 21:39 
NeWsOfTzzz hat folgendes geschrieben:
Selbst dann isses immer noch net 1 TB festplatte hehe ^^ Aber mit meinem PC hab ich mal mit nem FTP Scanner 2000 Threads/Connections gehabt und ca 200 FTP´s pro Sekunde gescannt.. Wenn ich über 2000 eingestellt habe wurde das nur langsamer ^^.. habe 2400+


Das heißt ich schaffe mit der INDY UDP Komponente ohne weiteres z.B. 3000 Clientverbindungen???
fritierte
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 58



BeitragVerfasst: Di 26.10.04 21:42 
nur um mal ne idee einzuwerfen:

wie wärs mit ner tabelle(meinetwegen ein dynamisches array of record / objekt *schulterzuck*) in der das erstellungsdatum und die 'bauzeit' eingetragen werden. in jedem spielzug wird datum auf >= erstellungsdatum+bauzeit eines jeden elementes geprüft, bei zutreffend wird aktion ausgeführt

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i:=0 to count(bauliste) do
  if bauliste[i].erstellt+bauliste[i].bauzeit <= datum then
  begin
    bauliste[i].pointeraufobjekt^.baue;
    löscheelement(bauliste,i);
  end;

so würd ich so ne aufgabe zumindest machen


Zuletzt bearbeitet von fritierte am Di 26.10.04 21:43, insgesamt 1-mal bearbeitet
NeWsOfTzzz
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Di 26.10.04 21:42 
Du musst bedenken, das waren 2000 AKTIVE Verbindungen.. und dann hatte ich 100% cpu auslastung, wenn jetzt ein Großteil deiner Verbindungen IDLE ist, könntest du natürlich noch viel mehr schaffen.
Martin W Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 116



BeitragVerfasst: Di 26.10.04 21:50 
NeWsOfTzzz hat folgendes geschrieben:
Du musst bedenken, das waren 2000 AKTIVE Verbindungen.. und dann hatte ich 100% cpu auslastung, wenn jetzt ein Großteil deiner Verbindungen IDLE ist, könntest du natürlich noch viel mehr schaffen.


IDLE = Verbunden, aber Cliet senden keine Befehle?

Zitat:
wie wärs mit ner tabelle(meinetwegen ein dynamisches array of record / objekt *schulterzuck*) in der das erstellungsdatum und die 'bauzeit' eingetragen werden. in jedem spielzug wird datum auf >= erstellungsdatum+bauzeit eines jeden elementes geprüft, bei zutreffend wird aktion ausgeführt


"in jedem Spielzug"... wenn ich jetzt zum Beispiel KI- Gegner hab, die im Hintergrund selbstständig was machen müssen geht des schon mal nicht mehr ;-) Aber kannst du mir deine Idee noch mal etwas genauer erklären?

Gruß und noch mal dank euch beiden!!!
delphiDeveloper
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Di 26.10.04 21:53 
Titel: verschiebn?
Zitat:
Ja die Warteschlange hab ich mir auch schon überlegt, aber erstens müsste die Warteschlange 180.000 groß sein und bei jedem Objekt das ausgeführt wird die 179.999 nachfolgenden um einen nach vorne geschoben werden.. ergo dasselbe wie direkt alle 180.000 variablen zu prüfen..


da wird nichts verschoben! du baust dir doch eine pointerstruktur auf und nimmst nach abarbeitung einfach die abgearbeiteten elemente raus. 180000 elemente in einer verketteten Liste sehe ich auch nicht als grosses problem.

lediglich das Einfügen in die warteschlange kostet im mittel n/2 vergleiche.


Zuletzt bearbeitet von delphiDeveloper am Di 26.10.04 21:56, insgesamt 1-mal bearbeitet
Martin W Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 116



BeitragVerfasst: Di 26.10.04 21:56 
Titel: Re: verschiebn?
delphiDeveloper hat folgendes geschrieben:
Zitat:
Ja die Warteschlange hab ich mir auch schon überlegt, aber erstens müsste die Warteschlange 180.000 groß sein und bei jedem Objekt das ausgeführt wird die 179.999 nachfolgenden um einen nach vorne geschoben werden.. ergo dasselbe wie direkt alle 180.000 variablen zu prüfen..


da wird nichts verschoben! du baust dir doch eine pointerstruktur auf und nimmst nach abarbeitung einfach die abgearbeiteten elemente raus. 180000 elemente in einer verketteten Liste sehe ich auch nicht als grosses problem.

lediglich das Einfügen in die warteschlange kostet im mittel n/2 vergleiche.


Zitat:
mittel n/2 vergleiche

Zitat:
pointerstruktur


Kannst du mir die beiden Begriffe mal etwas näherer erklären??? Ebendso wie deine Idee!
delphiDeveloper
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Di 26.10.04 22:03 
Titel: Listenstruktur und aufwand
deine mimimal Liste

ROOT --> even1 22:00 --> event2 --> 22:10 --> event3 22:20 --> event4 22:30 --> NIL

einfuegen
1. Best case ganz vorne ein vergleich und fertig
2. worst case ganz hinten also n vergleiche notwendig


im Mittel also n/2

1.) schau mal beim google nach linearer suche und aufwand
2.) Listenstrukur
schau dir mal die Datenstrukturen Tlist und TObjectList in Delphi an
fritierte
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 58



BeitragVerfasst: Di 26.10.04 22:14 
Martin W hat folgendes geschrieben:

"in jedem Spielzug"... wenn ich jetzt zum Beispiel KI- Gegner hab, die im Hintergrund selbstständig was machen müssen geht des schon mal nicht mehr ;-) Aber kannst du mir deine Idee noch mal etwas genauer erklären?


spielzug ist gleichzusetzen mit zeitfortschritt oder rundenende(bei rundenbasierter form), ich hab aber leider den post weiter vorn nicht gesehn der im prinzip das selbe macht.

die schleife kann man ja noch um status erweitern, z.B. verbleibende baudauer, ka, wie gesagt, war nur ne idee eines dummen user :?
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Fr 29.10.04 14:55 
ich hätte ne idee, wie du die Zugriffe minimieren könntest.
Jedes Element enthält neben der Zeit auch einen "link"/Pointer auf seinen Nachfolger(oder einfach dessen id). Der entscheidende Vorteil dabei ist, dass du beim einfügen neuer Elemente nur die kleinste obere bzw untere Schranke finden musst und dein Element dann (von den links her) dazwischen einfügen muss. Wo es letzendlich gespeichert wird ist ja egal, einfach ne freie stelle im array

Allerdings steigt dadurch der Speicherplatzverbrauch, aber ich denke die erheblich kleinere Zahl von Vergleich spricht für sich...

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 30.10.04 09:51 
im moment plane ich auch so ein aufbau spiel.
ich dachte mir das so:

ich zeichne alle gebäude in einem DXTimer(da ich es mit delphiX erstlelen möchte)
und vordem zeichen wird geschaut ob ein gebäude fertig ist bzw. gerade gebaut wird, wenn es geade gebaut wird wird z.b. eine andre garfik angezeigt du wirst ja niemals 1000 gebäude gleichzeitig bauen sonden immer sagen wir mal 20 stück vieleicht sogar noch wenige und wenn das dann immer noch zu viele sind kann man ja auch ein maximum einbauen so und so viele gebnäude kann man dann halt bauen gleichzeitig.

Hier mal etwas code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
zeichung der gebäude:
for i:= to Hig(gebäude) do begin
  if gebäude[i].gebaut = True then 
    GFL.DrawImage(geäude[i].x,gebäude[i].y,gebäude[i].name,gebäude[i].tex) // glf ist einie enige klasse mit der ist noch leichte ist dx anwendungen zu schreiben *G*
  else begin
    with Gebäude[i] do begin
      if bg+1 >= bgCount then begin
         bg:=0;

        inc(pa) 
       end
       else
        inc(bg)
    end;
  end;
  GFL.DrawImage(geäude[i].x,gebäude[i].y,gebäude[i].name,gebäude[i].tex)  
   
end;


erläerung:
im beispiel wird eine zeit variable hochgezählt wenn dieser count ereicht wurde, wird ein andres Baubild angezeigt aber nur wenn noch gebaut wird jetzt müsste nur noch eine if abfrage rein, wie viele baubilde ist gibt und so aber das kann man ja anpassen.

_________________
MFG
Michael Springwald, "kann kein englisch...."
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Sa 30.10.04 10:14 
[OT]@mimi: Seit wann kann man Umlaute in Variablen Namen verstecken?[/OT]

_________________
Klein, schwarz und ärgert Techniker? Jumper!
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 30.10.04 10:54 
das war nur ein beispiel, du kannst sie ja auch austauschen gegen oe bzw. ae *G*

_________________
MFG
Michael Springwald, "kann kein englisch...."