Jeg bruger ikke så meget ASP, så om det hurtigst eller ej, ved jeg ikke.
Men her er nogle 'tal' herfra:
Server : AMD-? 850 Mhz 256 MB RAM. (W2K/IIS 5.0/Access97)
Pc - I : AMD-? 850 Mhz 512 MB RAM. (W2K - Firefox)
Pc-II : PII 350 Mhz 512 MB RAM. (SuSE 8.2 - Konqueror 3.3.1)
Båndbredde 100 Mbps (LAN)
Peter Nielsen wrote:
> Hej
>
> Jeg har et par spørgsmål. Har lagt mærke til at nogle af mine
> hjemmesider er begyndt at kører utrolig langsomme... mest fordi
> at jeg nok har en masse funktioner kørende samtidig. Har ikke
> nogle konkrete eksempler, men mit spørgsmål kører egentlig bare
> på hvilke teknikker man bør bruge for at få ens sider til at køre
> mest optimal
>
> Fx så gik jeg idag og tænkte på at lave en simpel
> orddelingsfunktion... Noget ala:
>
> function orddeling(text)
> strlen = len(text)
> bogstavcount = 1
> wordcount = 0
> do until bogstavcount = strlen
> bogstav = mid(text,bogstavcount,1)
> if bogstav = " " then
> wordcount = 0
> else
> wordcount = wordcount + 1
> end if
> if wordcount = 20 then
> bogstav = bogstav & "<br/>"
> end if
> nytekst = nytekst & bogstav
> bogstavcount = bogstavcount + 1
> loop
> orddeling = nytekst
> end function
Hvis du kigger på den posr jeg lavede for lidt siden, så vil du se, at ved
konvertering fra Ansi - UTF-8, looper jeg alle karakterer igennem, og danne
en ny streng.
Jeg har noget kørende, hvor jeg henter 802 meddelser af forskellig længde.
Hver eneste af dem bliver kørt gennem Ansi - UTF8, som så checker hver
eneste karakter.
Derudover er der også nuget rekursivt replace af 45 streng 'sæt' "<" ->
"<" og den slags.
Dvs hver af de 802 meddelser bliver tjekket 45 gange pr. stk.
Resultatet bliver skiftet ud i en div i browseren.
Jeg skriver alt det her fordi der er mange parametre, når man måler på
sysindtryk.
Nå, men på min FF tager det under 1 sekund før skærmen er opdateret.
Den er nok 5 år gammel, så grafikkortet...?
På Konquerorer tager det i omegnen af 2 sekunder.
> Altså sådan noget i den dur... men det ville jo kræve at den
> skulle køre mine tekster igennem for ALLE tegn hver gang... og
> det er da en funktion der bliver loopet en del... men var det
> noget at en alm side ville kunne trække nemt? eller ville det
> være for hårdt for en alm hjemmeside??
Se ovenfor.
>
> Altså hvor mange gange kan sådan et loop der ca gentage sig selv
> i sekundet??
Tilsyneladende mange. Jeg tjekker lige en aktuel størrelse.... skifter lige
over på anden PC.... tilbage om lidt...
Tilbage igen..
Den siger 91KB, men det er inklusive html tags, så 45 KB er nok deromkriing.
Det vil sige _samtlige_ 45.000 tegn er tjekket +
der er tjekket for strenge 802*45 = 36090 replaces.
> Og hvad med databaseudtræk??
Hov, tiden er inklusive databaseudtræk af de 802 meddelser.
Join af to tabeller, lidt kriterier og sortering.
> har rimelig mange sider med mange
> databaseudtræk (access db)... så forleden lavede jeg en side hvor
> den gik en kalender igennem.. 3 måneder per side.. Men et par
> databaseudtræk per dag... det tager faktisk sådan at man kan se
> den generer siden.. og det er jo for langsomt
Så bruger du nok Access forkert.
> (er så igang med at
> skifte til MySQL)
Tvivler på det er en fordel på ASP sider.
> men ved i hvor mange databaseudtræk den kan
> tage?
Kender den ikke, men alle databaser performer afhængigt af hvordan man
bruger den.
_Alle_ databaser performer ad helvede til hvis man anlægger en desktop
approach.
> Er det smartere at lave alle databaseudtræk foroven i et
> loop og så bruge variabler?
Ikke forstået - HTTP er stateless.
> Hvad med Sessions og Cookies?
En 'session' er bare noget global hukommelse i IIS'en, der styres via
Cookies.
> er det
> også sværere for en side at genere en session i stedet for at
> placere session i en variabel? :)
Ikke forstået.
> Kan godt være at det kan lyde som dumme spørgsmål, men har aldrig
> været så god til at smide alt i variabler og sådan, og er ved
> være træt af at mine sider bliver langsomme :)
Der findes kun ét dunt spørgsmål - det, der _ikke_ blev stillet.
> Håber i forstår hvad jeg mener og kan hjælpe mig med at forstå
> the backbone af ASP :)
Hvis du kigger på den 'Function UTF8toAnsi (UTF8String)' fra min tidligere
post, er det faktisk en slags orddeling med chr(195) , du kan lege med at
bruge " " i stedet for chr(195).
hint: i UTF8toAnsi = UTF8toAnsi + Mid (UTF8String,S,P-S) ' non ascii
er 'Mid (UTF8String,S,P-S) ' på en måde det fundne ord.
Du skrev før
> har rimelig mange sider med mange
> databaseudtræk (access db)... så forleden lavede jeg en side hvor
> den gik en kalender igennem.. 3 måneder per side.
Hvis du smider lidt kode hvor du laver databaseudtrækket, kan det være du
kan få et par hint's.
--
Med venlig hilsen
Stig Johansen