WK 2026: Scoor de beste deals! Stel jouw winnende opstelling samen met behulp van ons advies.

[php & mysql] Wat is sneller?

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
welke van deze opties is sneller?

1:
PHP:
1
2
3
4
<?
$temp = mysql_fetch_object($result);
$id = $temp->id;
?>

2:
PHP:
1
2
3
4
<?
$temp = mysql_fetch_array($result);
$id = $temp["id"];
?>

3:
PHP:
1
2
3
<?
$id = mysql_result($result, 0, "id");
?>

merci :)

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 10-05 16:54
Ik zou zeggen, benchmark 't zelf, maar ik gok op mysql_result.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op woensdag 08 augustus 2001 20:45 schreef Taradino het volgende:
Ik zou zeggen, benchmark 't zelf, maar ik gok op mysql_result.
wou ut net zeggen

draai het 10000 keer
en kijk wat er sneller is

Doet iets met Cloud (MS/IBM)


  • tomato
  • Registratie: November 1999
  • Niet online
Scheelt zo goed als niets, maar ik neem aan dat je ze hier in volgorde gezet hebt naar snelheid (oplopend).

Draai eens een testje zou ik zeggen :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
mysql_fetch_object altijd het sloomste (kijk ook eens naar assoc)

mysql_fetch_array sneller dan fetch_object en is vooral handig voor veel 'fields' (liefst ook meerdere rows)

mysql_result sneller dan beide als jij 1 result wil (liefst maar 1 row) en slomer als jij er meerdere wilt (dus meerdere rows)

dit is uit ervaring/manual/hints/tips en NIET getimed

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
benchmarken is idd de beste oplossing...

maar volgens de manual is mysql_result een langzamere oplossing, maar het is wel minder code.

geen mensen die dit weten of er ervaring mee hebben?

  • tomato
  • Registratie: November 1999
  • Niet online
Op woensdag 08 augustus 2001 21:03 schreef GraasGast het volgende:
geen mensen die dit weten of er ervaring mee hebben?
Geen mensen die hier een vraag over stellen en in staat zijn even een benchmark te draaien? :+

  • Grum
  • Registratie: Juni 2001
  • Niet online
mysql_result
When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mysql_result().
sluit wel aan bij me verhaaltje he :)

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
jah okay ik ben een beetje lui vandaag...:z

heeft iedereen wel eens...ik zal dan maar eens een benchmark gaan draaien he :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-06 09:57

chem

Reist de wereld rond

100,000 runs op een 2000-records tellende table:
2.286
2.599
3.047

respectievelijk... zie http://jimbob.xs4all.nl/test.php

machine:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
michiel@jimbob:~$ cat /proc/cpuinfo
processor    : 0
vendor_id    : AuthenticAMD
cpu family  : 5
model        : 8
model name  : AMD-K6(tm) 3D processor
stepping      : 12
cpu MHz    : 400.916
cache size  : 64 KB
fdiv_bug      : no
hlt_bug    : no
sep_bug    : no
f00f_bug      : no
coma_bug      : no
fpu      : yes
fpu_exception   : yes
cpuid level     : 1
wp        : yes
flags        : fpu vme de pse tsc msr mce cx8 sep mtrr pge mmx 3dnow
bogomips      : 799.54

Klaar voor een nieuwe uitdaging.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-06 09:57

chem

Reist de wereld rond

2e test levert ± 1.5 seconde op :?

Klaar voor een nieuwe uitdaging.


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
* GraasGast dankt chem :)

  • tomato
  • Registratie: November 1999
  • Niet online
Op woensdag 08 augustus 2001 21:17 schreef chem het volgende:
100,000 runs op een 2000-records tellende table:
2.286
2.599
3.047
respectievelijk...
En als je de 3 manieren in je code nou omdraait? ;)

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
Test1
1.428 100000 runs, fetch_object
1.267 100000 runs, fetch_array
1.459 100000 runs, mysql_result

Test2
1.375 100000 runs, fetch_object
1.279 100000 runs, fetch_array
1.889 100000 runs, mysql_result

offtopic:
south op, ik zal je krijgen met je directory-surfing, pak aen, een 1 mb PNG! lol :D

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
conclusie:

fetch_array is het snelste, dicht gevolgd door fetch_object, op afstand gevolgd door result...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-06 09:57

chem

Reist de wereld rond

grappig dat mysql_fetch_array($result,MYSQL_ASSOC); flink trager is!

Klaar voor een nieuwe uitdaging.


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-06 10:56

GraasGast

Analogue Heaven

Topicstarter
idd wazig...

maar ach, zo vaak gebruik ik geen associatives...doe mij maar objects :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-06 09:57

chem

Reist de wereld rond

mjah maar mij lijkt het UITSCHAKELEN juist een voordeel :?

btw in de 'timing' zit niet de tijd meegerekend om de records te selecten...

Klaar voor een nieuwe uitdaging.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Vergeet niet, dat je niet alleen data "fetched"...
Je werkt er ook mee...

Werken met objecten in php kan een stuk trager zijn dan werken met array's of losse variabelen.

Een simpel testje leverde een factor 5 verschil ($a = $b + $c, en binnen een object).
Pagina: 1