[PHP] Single quotes sneller dan double?!?

Pagina: 1
Acties:

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
[edit]
Oops, sorry :D had een factor 10 verschil in de resultaten, was door een stomme tiepfout van mezelf. Er zijn dus geen schokkende verschillen..

Hieronder de resultaten die ik nu krijg:

Double quotes: 2.8294290304184
Single quotes: 2.885381937027

en:

Single quotes: 2.8265939950943
Double quotes: 3.1791330575943


Lijkt dus bar weinig verschil te zitten tussen single en double quote. Moet nog eens gaan kijken wat er gebeurd als er ook variable substitution gebruikt wordt. Maar eerst maar eens slapen :Z Is nodig volgensmij.. Pff, blunder }:O

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
LOL !
code:
1
for($i=0; $i < 10000; $i++)

en
code:
1
for($i=0; $i < 100000; $i++)

beetje oneerlijk, niet? :+

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Haha, jep. Had het al gezien. Zie edit :D

Ik ga maar eens naar bed |:(

  • Orphix
  • Registratie: Februari 2000
  • Niet online
phew ik was al bang dat ik alles moest herschrijven :D

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
met beide op 10.000 krijg ik dit:
code:
1
2
Double quotes: 10.643697023392 
Single quotes: 10.994059920311

geen significant verschil dus bij deze test.

[edit]
goh, jouw computer is wel heel wat sneller :) (maar ik had ook ondertussen een mp3 aan)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik neem aan dat er bij het inlezen van de string wordt gekeken en welke variabelen erin opgenomen zijn.... Hij zal dat wel omzetten naar een optelling als er iets inzit. Er zit echter niets in, dus maakt het niets uit :) . Hooguit wellicht een minimale constante bij het parsen van de code.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op woensdag 30 januari 2002 01:47 schreef mbravenboer het volgende:
Ik neem aan dat er bij het inlezen van de string wordt gekeken en welke variabelen erin opgenomen zijn.... Hij zal dat wel omzetten naar een optelling als er iets inzit. Er zit echter niets in, dus maakt het niets uit :) . Hooguit wellicht een minimale constante bij het parsen van de code.
Jah naar dat verschil ben ik ook wel benieuwd. Ik verwacht echter dat ook dat in zo'n enorme for loop niet zoveel uitmaakt, omdat het van tevoren al een beetje (soort van) gecompileerd wordt, neem ik aan.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Orphix: omdat het van tevoren al een beetje (soort van) gecompileerd wordt, neem ik aan.
Inderdaad, dat noemde ik een 'constante'...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Heb er nu:
...blabla' . $i;

en

...blabla $i";

van gemaakt en dan krijg ik:

Single quotes: 7.8300459384918
Double quotes: 38.105823993683

Hier dus wel een behoorlijk verschil..
Moet eigenlijk eens kijken wat er gebeurd als je geen forloop gebruikt.. Ben alleen bang dat dan de tijd om het script te parsen belangrijk wordt en dat is een stuk lastiger te meten ;(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
bartvb: Hier dus wel een behoorlijk verschil..
Dat is wel vrij matig. Kennelijk wordt de variant met double quotes dus niet gedesugard naar de variant met string optelling.

Dit kan je alleen niet met zekerheid zeggen, daarvoor moet je eigenlijk even meerdere tests doen met verschillende loop-grootte... Je kunt dan een mooi lijntje tekenen en kijken of de double-quote variant constant duurder is dan de single-quote variant of niet.

Uit je resultaat lijkt mij dat dus sterk, maar je weet het nooit.... Kan je misschien nog een tweede test draaien met nog meer loops? 1 of 2 extra tests zijn al genoeg :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik heb ook even een testje gedaan.
De tests zijn
met een korte zin en 3 substitutes (small)
met een lange zin en 3 substitutes (med)
met een korte zin en 6 substitutes (small 2x)

hieronder de resultaten
code:
1
2
3
4
5
6
SQ small 0.025792002677917
DQ small 0.081542015075684
SQ med 2.8256860971451
DQ med 6.0477590560913
SQ small 2x 0.10046589374542
DQ small 2x 0.17797803878784

2e run
code:
1
2
3
4
5
6
SQ small 0.029673933982849
DQ small 0.090021014213562
SQ med 2.8185889720917
DQ med 6.0471400022507
SQ small 2x 0.1020929813385
DQ small 2x 0.17926800251007

single quote is dus in alle gevallen het snelste. Bij een langere tekst wordt dit verschil (verwacht) alleen maar groter. Bij meerdere substituties haalt de double quote de single quote relatie wel in, maar blijft achter.

De brakke source is hier te vinden.

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ik las er gisteren ook al een artikel over op Devarticles.com, best wel interessant...
Dacht eerst ook dat je gewoonweg alle double's kon replacen met singles, maar dat werkt natuurlijk niet :)

'blablabla '.$foo; is natuurlijk wat anders dan "blablablabla $foo";

Dat wordt herschrijven! :)

(mensen die m'n edit van zonet hebben gelezen moeten hem negeren, was onzin)

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Zie ook dit topic: [php?] Benchmark topic :)

On track

Pagina: 1