MacMac wrote:
>
> Endnu en gang har jeg en generelt spørgsmål ang. performance:
> Hvordan laver man mest optimalt en chat?
> I øjeblikket har min chat blot 15 application variabler der holder styr på
> de seneste 15 beskeder hvilket går rigtig hurtigt. Men hvad nu når man gerne
> vil tilføje privat snak og flere rum? Så synes jeg det bliver en anelse
> uoverskueligt med en masse applications.
Der er vel ikke nogen grund til at have en application variabel til hver
tekstlinie (så skal du jo også bruge tid på at flytte rundt på
teksten?). (Det virker forkert med alle de application variabler, men
man må jo ikke lægge dictionary-objekter i application/session) Hvad
lige springer i hovdet er, at have nogle application-variabler: en til
hver bruger eks. "usertext_<brugernavn>" (som indeholder brugerens
chatteskt, når der indsættes i denne sørges for at den ikke er over 10k
?), en til hver rum eks. "roomusers_<rum>" (som indeholder de brugere,
som er i rummet i en kommasepereret liste), en enkelt med rumene eks.
"rooms" og en enkelt til aktive brugere eks. "activeusers" (en
kommasepereret liste over aktive brugerer (samt et timestamp og det rum
de er i), så gamle brugere kan smides ud.
Når en siger noget til hele rumme slår du op i "roomusers_<rum>" og
tilføjer teksten til alle "usertext_<brugernavn>". Når der snakkes
privat tilføjer du kun til en "usertext_<brugernavn>". Når der skiftes
rum opdaterer du "activeusers" og "roomusers_<rum>"...
> Samtidig synes jeg heller ikke
> rigtig at der er synderligt optimalt at lave et database udtræk fra en
> database hele tiden... hvad gør jeg?
Hvorfor har du database udtræk?
> Hvad gør de store som Ofir og Jubii Chat?
Ofir køre jo caputs gamle chatsystem, som er en deamon, skevet i c, som
både indeholder chatsystemet og webserveren således at alle
informationer kan holdes i hukommelsen. Jubiis system ser ud til at have
en asp frontend, men dele af den ligger nok i nogle com-objekter, som
snakker op imod en chat-service(?). Jubii gør også det, at en stor del
af logikken ligger hos klienten, serveren behøver derfor kun at sende
nye beskeder (ikke også alle de gamle beskeder) hver gang der opdateres.
Når man skriver i f.eks. c/c++/java/o-pacal har du jo fornøjelsen af
f.eks. pointerer så du kan lave nogle optimeringer, hvor al tekst kun
findes en gang ...
(disclaimer: dette er frit fra leveren og da jeg normalt tænker bedst
med hjernen er det nok ikke optimalt
--
Lauritz