Autor |
Beitrag |
NeWsOfTzzz
Beiträge: 233
D4 Prof
|
Verfasst: Di 26.10.04 21:26
2 TB Festplatte
Mein Vorschlag: die Wahrheit sagen? ^^
|
|
Martin W
Beiträge: 116
|
Verfasst: Di 26.10.04 21:33
NeWsOfTzzz hat folgendes geschrieben: | 2 TB Festplatte
Mein Vorschlag: die Wahrheit sagen? ^^ |
sry, 1 TB...
4 Festplatten á 250 GB in Raid geschalten.
|
|
NeWsOfTzzz
Beiträge: 233
D4 Prof
|
Verfasst: 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
Beiträge: 116
|
Verfasst: 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
Beiträge: 58
|
Verfasst: 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
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
Beiträge: 233
D4 Prof
|
Verfasst: 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
Beiträge: 116
|
Verfasst: 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
Beiträge: 48
|
Verfasst: 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
Beiträge: 116
|
Verfasst: 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 |
Kannst du mir die beiden Begriffe mal etwas näherer erklären??? Ebendso wie deine Idee!
|
|
delphiDeveloper
Beiträge: 48
|
Verfasst: 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
Beiträge: 58
|
Verfasst: 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
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: 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
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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:
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) 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
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: 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
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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...."
|
|