Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Global hidas

Opiskelija [08.05.2005 18:14:37]

#

Mikähän on syynä, että alinmainen on huomattavasti nopeampi, ylempi noin 7sek alempi vain 0,15sek? Functiota kutsutaan tuhansia kertoja.

$paljon_dataa sisältää muuttumatonta dataa.


fuction xx(){
global $paljon_dataa
...
}

fuction xx($paljon_dataa){
...
}


Kannattaako siis functiolle viedä muuttujien tiedot aina function perässä, eikä globalilla?

Mitä PHP kirjoja olen lukenut, niin niissä neuvotaan käyttämään globalia

Juice [08.05.2005 20:41:32]

#

Oletko kokeillut vakiota?

ajv [08.05.2005 21:38:12]

#

Opiskelija kirjoitti:

Mitä PHP kirjoja olen lukenut, niin niissä neuvotaan käyttämään globalia

Hmmpfff... Mitä minä yhtään ohjelmoinnista tajuan, globaalit muuttujat ovat suolesta ja niiden käyttöä kannattaa välttää.

Sinänsä jännä huomio ja hyvä että mainitsit sen myös julkisesti - eipä tarvitse tuotakaan kantapään kautta oppia :) Olisin kyllä kuvitellut, että globaalin muuttujan käyttö tuollaisesa tilanteessa olisi nopeampaa, sillä jos laittaa datan argumenttina fukntiolle, datahan kopioidaan uuteen muuttujaan(ellei sitten käytä &data). Mutta jos ei ole mitään erityistä syytä käyttää globaalia, niin argumenttina se data sille funktiolle.

T.M. [09.05.2005 15:19:23]

#

Mites minä saan tälläisiä tuloksia:

<?php

$keijo = "jotain";

// testifunktio 1:
function seppo1(){
	global $keijo;
}
// Käytin seuraavanlaisesti:
seppo1();
// Keskimäärin 18378 kierrosta per sekunti



// testifunktio 2:
function seppo2($keijo){

}
// Käytin seuraavanlaisesti:
seppo2($keijo);
// Keskimäärin 17286 kierrosta per sekunti

?>

Eli global on hitusen nopeampi.

Antti Laaksonen [09.05.2005 16:52:27]

#

Eikö funktioissa ole mitään muuta eroa kuin että toisessa käytössä on globaali muuttuja ja toisessa ei? On vaikea uskoa, että ero olisi noin suuri. Mutta jos se tosiaan on, niin älä toki käytä globaalia muuttujaa siinä kohdassa. Sinänsä globaalit muuttujat eivät ole pannassa, jos ne eivät joka tarkoitukseen sovikaan. Riippuu tapauksesta siis, kannattaako globaalia muuttujaa käyttää.

Opiskelija [09.05.2005 18:47:43]

#

Ihan samanlaiset on, ainoa ero on miten functiolle viedään data.

Piti ihan kokeilla tyhjillä functioilla, molemmat tavat suunnilleen yhtänopeita.

Poistin rivi riviltä functiosta koodia kunnes hitauden syy selvisi, nimittäin array_rand joka tekee hitaan jos muuttuja on globaali, mutta miksi?


Vakio ei käy tähän tarkoitukseen, koska data taulukko muotoista. Tosin niille löytyy muuta käyttöä, täytyy tutustua niihin tarkemmin. Empäs tiennytkään, että niitä voi käyttää functiossa suoraan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta