Som jeg foreslog i det andet spm, så start med Google. Det vil formodentlig holde dig beskæftiget en rum tid - både med tekst og eksempler. Jeg har selv prøvet ... det er bl.a. på den baggrund, jeg udtaler mig :)
Kom nu med nogle konkrete eksempler. Her er to små eksempler. Kør dem og kom med en kommentar.
VBscript:
<html> <script language=VBscript> Option Explicit sub test() dim t1,t2,A(200000),i t1=Timer for i=1 to 200000 A(i)=i next t2=Timer MsgBox t2-t1 end sub </script> <body> <form name="f"> <input type=button value="Tryk her" onClick="test()"> </form> </body> </html>
"Det, vi oplever, er ikke naturen - men naturen udsat for vores måde at spørge på." - Niels Bohr
Med tanke på 10/10-2003 00:06:20: Er du sikker på, hvad det egentlig er, du måler på? Er det performance af sprogenes håndtering af arrays eller strenge? Prøv med noget mere kompliceret array-håndtering.
Har du prøvet at søge på det? Jeg gjorde det, da jeg skulle vælge, hvilket sprog, jeg ville anvende under ASP. Samtidig spurgte jeg de udviklere, jeg kender, der kan begge sprog (godt), trawlede usergroups m.m. Alle steder fik jeg samme svar. Jeg brugte faktisk temmelig lang tid og megen energi på at checke scenen ud og orker ikke starte forfra der, hvor jeg allerede har været. Hvis du har lyst til at foretage dine egne undersøgelser, synes jeg til gengæld absolut, du skal gøre det ;o) /mvh
Nu er det jo svært at isolere tingene helt, og det var derfor jeg valgte to forskellige typer tildeling i for-løkken. Med A(i)=i var VBscript 9-10 gange hurtigere, og med A(i)="qwertyu" ca. 50 gange hurtigere. VBscript er kendt for at være dårlig til at lægge tekststrenge sammen, og jeg havde egentlig forventet, der kom problemer, når der kom tekststrenge ind i billedet.
Jeg har altid troet, at der mht performance ikke var den helt store forskel på de to sprog, og har valgt mest at benytte VBscript, når jeg koder ASP.
Jeg har selvfølgelig prøvet at søge, men har endnu ikke fundet noget rigtig fornuftigt.
Når du nu har undersøgt disse ting olebole, kunne du så ikke komme med et link, eller en programstump, der kan illustrere forskelle?
Jeg har i øvrigt nu lavet en VBscript løsning, der næsten lige så hurtig som oleboles metode fra www.eksperten.dk/spm/409861. arrayet B indeholder en liste af ord. Der skal laves en ny uden dubletter:
n=Ubound(B) for i=0 to n mail=B(i) if not D.exists(mail) then D.Add mail,"" end if next C=D.keys 'Nu indeholder arrayet C de ønskede ord oleboles metode: 0,093 sek (2000 ord) min metode: 0,125 sek (2000 ord)
Hvor har du fra, at VBS skulle være kendt for at være dårligt performende med hensyn til strenge? Strenge er _netop_ et af de få områder, hvor VBS out-performer JScript :)
Læg i øvrigt mærke til, at når du laver et eksempel, hvor du faktisk laver det samme i de to sprog, ender JScript som værende det hurtigste (10/10-2003 14:26:48).
Når man siger at VBscript er dårligt til at håndtere strenge, så er det ikke fordi man sammenligner med JS, men fordi man hurtigt får problemer, hvis store strenge skal concateneres. Det er ikke en trøst, at JS er endnu ringere.
Når man skal lægge to strenge sammen, kan man dels gør det på den traditionelle måde st=st1 & st2 Det, vil man opdage, går utrolig langsomt, hvis strengenes længder er store. Så langsomt, at det kan være en helt ubrugelig metode. I stedet gør man så sådan: dim A(1) A(0)=st1:A(1)=st2 st=join(A,"") eksemplet (10/10-2003 14:26:48): JS vinder her, men det er ikke ret meget. Jeg laver da også det samme i de 2 sprog i eksemplet (10/10-2003 12:46:29), og her vinder VBscript med en faktor 5.
Mon ikke vi snart kan konkludere, at der ikke er belæg for sige: "VBS er håbløst ineffektivt til at behandle arrays - nok det langsomste sprog på markedet til netop den øvelse :)"
Jeg er som sagt ikke ude på at promovere VBscript, men jeg vil da ikke lade det ovenfor citerede stå som værende en sandhed.
Kom nu med et eksempel, der virkelig viser en markant forskel i JS's favør.
Indtil de er sket vil jeg stadig hævde at der ikke er den store forskel (med mindre man altså skal arbejde med strenge, hvor det ene sprog er dårligt, og det andet er værre).
Jeg har lidt vanskeligt ved at finde hoved og hale i din argumentation ... men du må såmænd hævde, hvad du har lyst til. Jeg _er_ som sagt færdig med min 'undersøgelse' - men fortsæt endelig din egen :) /mvh
Du kan ikke finde ud af min argumentation? Mon ikke du er for fastlåst i dine tidligere undersøgelser. Min argumentation er da ellers krystalklar: I alle de eksempler vi indtil nu har været igennem, er der enten kun en meget lille (forskel 0,093 sek mod 0,125 sek) eller en meget stor forskel i VBscript favør. På nettet http://www.15seconds.com/issue/010716.htm igen et eksempel. Jeg vil dog ikke sige andet, end at det ikke er et spørgsmål om performance, der skal bestemme, om man bruger det ene eller det andet af de to sprog.
Hvad kan du forlange mere? Hvorfor kommer du ikke med et eksempel, der viser noget andet?
Jeg er kun ude på at blive klogere, så hvis du ligger inde med sandheden, så skulle du da gøre andre den tjeneste at komme med et link eller et konkret eksempel.
Nej ... jeg finder din argumentation usammenhængende. Så vidt jeg kan se, er JScript hurtigere på det, vi diskuterede.
"Jeg vil dog ikke sige andet, end at det ikke er et spørgsmål om performance, der skal bestemme, om man bruger det ene eller det andet af de to sprog." Nææhhh ... man kan jo vælge så mange runde til at gøre det ene eller det andet - men hvis performance er dig ligegyldig, er diskussionen jo fuldstændig tåbelig :)
Jeg har ingen links liggende i mine favorites - og jeg agter ikke at bruge tid på at søge info til dig. Der ligger bunker af info om emnet på nettet, som også du burde kunne finde.
Som sagt: Fortsæt endelig din undersøgelse - og hvis du mener VBS gør dig lykkelig, så fortsæt med at skrive i det :) /mvh
Nu misforstår du igen: Når jeg siger, at det ikke er et spørgsmål om performance, når man skal vælge i mellem de to sprog, så er det jo fordi, der netop ikke er tale om væsentlige forskelle i performance. Så når man skal vælge er det derfor andre ting, der er afgørende. Selvfølgelig skal man da ikke benytte et sprog, der performer dårligt. Prøv nu at være mere konstruktiv og positiv.
Det er vel ikke kun mig, der kunne have interesse i disse ting, og når du nu er så fast i din overbevisning, så kunne da i det mindste lægge et lille eksempel, der viser din påstand.
Du har faktisk endnu ikke kommet med et eneste eksempel (udover det ene med de 0,093 og 0,125, og her var det jo nok mere VBscripts dictionary-objekt, der blev testet), der styrker din påstand om den dårlige array-håndtering i VBscript.
VBS gør mig ikke lykkelig. Jeg er ikke missionær for VBscript, men jeg kan ikke lide, når nogle kommer med påstande, og så ikke vil komme med en ordentlig dokumentation.
Jamen, hvis du ikke kan lide mine kommentarer, må du gerne lade være med det. Jeg har fortalt dig, du blot kan søge på Google ... det kan vel ikke være så svært - og jeg har faktisk adre og bedre ting at lave end at gøre det for dig :) EOD
Men det er da utroligt. Du skal sandelig ikke gøre noget for mig specielt. Du burde gøre noget for dig selv og for andre, der måske læser dette. Og jeg håber, du i det mindste af denne lange ordveksling har lært at være mindre vidtløftig, når du ytrer dig, og altid sørge for at have argumentationen i orden. Det var jo dine udokumenterede og voldsomme udtalelser, der startede alt dette.
Jeg er ked af, at jeg oprindelig brugte vendingerne "sludder" og "helt hen i vejret", for det er måske derfor du har været så negativ.
Jeg stopper også diskussionen nu med dig (med mindre du kommer med konstruktive indlæg). Det kan da være vi mødes igen her på eksperten på en forhåbentlig mere positiv måde.
JavaScript og VBScript er ikke direkte sammenlignelige mht performance af den simple grund at de to sprog er bygget forskelligt op. JavaScript kan programeres objekt-orienteret. Lad mig tage udgangspunkt i diskurtionen om strings og concatations. "Rigtig" javascript, d.v.s. JavaScript 1.5 til gecko browsere anvender StringBuffers og konverterer dem kun til rene strings når de skal anvendes som sådanne. Der er altså ingen problemer her. JScript derimod halter gevaldigt i takt med en given streng variabel vokser. Derfor vil det være en fordel at anvende en buffer her. Til det formål kan vi kode vores egen Buffer konstruktor og anvende denne. function Buffer() { this._buffer=new Array(); this.add = function(str) { this._buffer[this._buffer.length] = str; return this; } this.toString = function() { return this._buffer.join(''); } this.clear = function() { this._buffer.length = 0; } } // i anvendelse buffer = new Buffer(); for (i=0;i!=200;i++) buffer.add("word "); alert(buffer);
Jeg mener at de to største problemer med VBScript er 1) Det kan med min viden ikke kodes objekt-orienteret hvilket gør det svært at udbygge. 2) Det virker kun i IE.
Du bør nok teste fler-dimensionelle arrays også. Jeg har ikke særlig meget viden om VBScript, da jeg ikke finder dette sprog specielt tiltalende af ovenstående grunde.
=maddog=>>Du har helt ret i dine punkter 1 og 2. Tilsyneladende har begge sprog problemer med strenghåndteringen. I VBscript benyttes ofte arrays og join-funktionen når lange strenge skal concateneres (se kommentar 10/10-2003 17:45:36) Du har også ret i, at de to sprog er så forskellige, at det ofte ikke vil være rimeligt at sammenligne dem mht performance. Men når det drejer sig om enkle opgaver, og simpel håndtering af tabeller (arrays) kan man vel godt. Hidtil har jeg ikke kunnet finde noget, der taler for at VBscript skulle være specielt dårligt i den henseende (snarere omvendt)
Det er ikke urimeligt at forestille sig at VBScript kan være mere effektivt end client JScript på visse punkter idét denne runtime kompiler er udviklet relativt sent og specifikt til IE. I øvrigt også udviklet på bekostning af JavaScript, der ikke fuld ud støtter nedarvning i IE. F.x kan man ikke arve fra HTML elementer i IE, som man kan i JavaScript 1.5.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.