Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Co szybsze? " czy '?
Forum PHP.pl > Forum > Przedszkole
kkuba
Witam. 

Od dłuższego czasu straszliwie mnie męczy jedno pytanie - co jest szybsze? " czy '?

Przykładowo: 

Kod
echo 'tekst'. $zmienna .'dalszy tekst...';


czy może

Kod
echo "tekst $zmienna dalszy tekst...";


(tu domyślam się, że wynik będzie najgorszy), czy może

Kod
echo "tekst". $zmienna ."dalszy tekst...";


?

Próbowałem to sprawdzić, jednak wyniki nie są jednoznaczne. 



  1. <?php
  2.  
  3.     $num = 100000;
  4.  
  5.  
  6.  
  7.     $start = microtime();
  8.     for($q = 0; $q < $num; $q++)
  9.     {
  10.         echo '';
  11.     }
  12.  
  13.     $time = round( microtime() - $start, 6 );
  14.     echo $time . '<br />';
  15.  
  16.     // -----
  17.  
  18.     $start = microtime();
  19.     for($q = 0; $q < $num; $q++)
  20.     {
  21.         echo "";
  22.     }
  23.  
  24.     $time = round( microtime() - $start, 6 );
  25.     echo $time;
  26.  
  27. ?>





Raz wygląda to tak: 

Cytat
0.011702
0.014049


a raz tak: 

Cytat
0.022095
0.013994



Może ktoś już zna odpowiedź na to jakże nurtujące pytanie? 




Pozdrawiam. 
Spawnm
pierwsze 2 są ok, tak samo pewnie będą działać więc jak ci wygodniej.
a 3 jest fee tongue.gif
kkuba
Kurde, no nie da się uzyskać tym moim sposobem jednoznacznej odpowiedzi.

Osobiście bardziej mi się podoba używanie apostrofów, co wg. tego artykułu jest 'dobrym nawykiem programisty'.

Co wy o tym sądzicie, czy to prawda?
Zyx
Kiedyś robiłem takie pomiary i wyszło mi, że bez doklejania czegokolwiek do tekstu oraz bez używania kodów formatujących, oba zapisy przetwarzane są w porównywalnym czasie. Różnice uwidaczniają się, gdy będziemy próbowali dokleić do tekstu wartość jakiejś zmiennej. W moich testach zapętliłem najpierw:

Kod
'tekst '.$zmienna.' tekst'


a potem:

Kod
"tekst $zmienna tekst"


I przy większej ilości zapętleń symulujących powszechne wykorzystanie konkretnego rozwiązania różnica była porażająca na korzyść tego pierwszego.
Spawnm
i bardzo fajnie smile.gif
w 1 łatwiej o analizę kodu , ale pamiętajmy że i 2 jest poprawny.
kkuba
No to się cieszę, bo tak mi się właśnie zdawało : )

Poza tym, znajomy powiedział: "IK: (17:52)
imo, apostrofy są szybsze
IK: (17:52)
nie musisz naciskać shifta"
: )

Dzieki i pozdrawiam : )
Spawnm
Cytat(kkuba @ 2.04.2009, 17:56:54 ) *
Poza tym, znajomy powiedział: "IK: (17:52)
imo, apostrofy są szybsze
IK: (17:52)
nie musisz naciskać shifta"

ale musisz robić nadmiarowe '..' winksmiley.jpg
kkuba
Hm.. no tak, ale kropke mam obok apostrofa, a przyzwyczajony jestem do używania lewego shifta, a że nie piszę tak 'jak się powinno' (wszystkie 10 palców - ja używam 7), więc muszę przenosić lewą dłoń, aby wcisnąć ten shift ; p

Poza tym podobno szybciej działa
Kod
"taki". $zapis

Kod
'wnioskuje, ze ten tez dziala'. $szybciej

niż
Kod
"taki $zapis"
TomASS
@kkuba
Piszesz:
  1. <?php
  2. echo "tekst $zmienna dalszy tekst...";
  3. ?>

A jak wstawisz tablicę lub etodę obiektu? Musisz stosować łączenia.

Cytat
Raz wygląda to tak:

Z ilu pomiarów są to średnie?

@Spawnm
Cytat
a 3 jest fee

A dlaczego?



Cytat
Osobiście bardziej mi się podoba używanie apostrofów, co wg. tego artykułu jest 'dobrym nawykiem programisty'.

Ja używam tego co wygodniej jest pisać. Gdy potrzebuję zapytanie SQLowe zrobić, to używam podwójnych:
  1. <?php
  2. $query = "UPDAETE tabela SET pole='wartosc'";
  3. ?>

dzięki czemu nie muszę pisać \'
Natomiast jeśli piszę kod HTML:
  1. <?php
  2. echo '<td style="color: red;">';
  3. ?>

to daję pojedyncze - bo mi tak wygodniej.


W ogóle, to szkoda nad tym za długo myśleć - po stokroć więcej uzyska się sprytnie konstruując pętle, klasy i zapytania niż zamienianie apostrofów.
dr_bonzo
Tu masz moj post sprzed lat o tym wlasnie temacie, z kodem do testow: http://forum.php.pl/index.php?showtopic=56024&hl=
kkuba
Cytat
A jak wstawisz tablicę lub etodę obiektu? Musisz stosować łączenia.

Starodawny jestem, klas nie używam : ) Przynajmniej póki co.

Cytat
Z ilu pomiarów są to średnie?

Dwóch, całkowicie przypadkowych.

Cytat
Ja używam tego co wygodniej jest pisać. Gdy potrzebuję zapytanie SQLowe zrobić, to używam podwójnych:
  1. <?php
  2. $query = "UPDAETE tabela SET pole='wartosc'";
  3. ?>


dzięki czemu nie muszę pisać \'


Ja piszę:
Kod
mysql_query('UPDATE tabela SET pole="wartosc" ');

: )

Praktycznie wszędzie używam apostrofów, od początku tak robiłem - weszło w krew.
Spawnm
Cytat(TomASS @ 2.04.2009, 18:10:09 ) *
@Spawnm

A dlaczego?

ok, ale mi chodzi o zapis typu echo "lol ".$zmienna."lol";
po co spowalniasz kod dając " skoro i tak zmienne lecą między kropki:P
mls
Cytat(TomASS @ 2.04.2009, 18:10:09 ) *
A jak wstawisz tablicę lub etodę obiektu? Musisz stosować łączenia.


Pomijając oczywiście fakt, że jest to rozwiązanie wysoce nieefektywne, to jednak nie ma problemu z wstawieniem tablicy lub obiektu:
  1. <?php
  2. $tekst = "test obiektu {$obiekt->zmienna} lub tablicy {$tablica[0]} test";
  3. ?>
TomASS
Cytat
Dwóch, całkowicie przypadkowych.

To na bank super wiarygodne tongue.gif

Cytat
ok, ale mi chodzi o zapis typu echo "lol ".$zmienna."lol";
po co spowalniasz kod dając " skoro i tak zmienne lecą między kropki:P

W tym wypadku tylko wygoda/przyzwyczajenie.


Cytat
Pomijając oczywiście fakt, że jest to rozwiązanie wysoce nieefektywne, to jednak nie ma problemu z wstawieniem tablicy lub obiektu:

Nie mówię, że nie można smile.gif Tylko twierdzę, że tak ja tak nie robię smile.gif
pi_wo
nie mam zdania na temat tego co jest szybsze, ale wiem co jest bardziej przejrzyste... i myślę, że zapis 'aaaa'.$zmienna.'bbbb' powinien być jedynym stosowanym... wprowadzanie zmiennej "wewnątrz" stringa wprowadza tylko zamieszanie i nie jest logicznie uzasadnione. Ot co smile.gif

Problem jest tylko taki, że nie można być konsekwentnym i stosować tylko jednego zapisy. Spróbujcie na ten przykład:

fputs($handle, $zmienna.'\n');

ni da rady ;]
cojack
Może jeszcze porozmawiamy co jest szybsze? echo czy print ? A może o pętlach porozmawiamy? No bez jaj, jak by to miało jakieś znaczenie. Ja tam u siebie w kodzie mam oddzielone php od htmla, i piszę jak mi wygodniej, a cała prędkość polega na tym że jak ' i " jest 1 bajt czyli 8bitow, czy mu zrobisz ' czy " komputer dostanie 8 bitow, proste, ascii sie kłania, a wierz lub nie 8 bitów liczy tak samo, tylko zależy od tego ile procesów ma aktualnie w pamięci zadeklarowanych, z taką szybkością Ci przemieli. Pisz tak jak Ci wygodnie, ja czasami zapytanie do sqla w ogole piszę np tak:

Kod
pg_query("INSERT INTO tabela (asd, haf, hara, teasd) VALUES ('$_POST[asda], $_POST[asdag], $_POST[agae], $_POST[4tagf]');


Czasami piszę tak

Kod
pg_query("INSERT INTO tabela (asd, haf, hara, teasd) VALUES ('".$_POST[asda]."', ...);


Czasami w ogóle nie piszę tongue.gif

Piszesz tak jak chcesz i tak jak Ci wygodnie, tak jak Ci się składnie podoba. Nie patrz na takie bzdety co jest szybsze, bo to akurat w takich rzeczasz jest najmniej istotne, bardziej istotniejsze było by spytanie czy rzutowanie typu w php jest czasochłone, ale dla mnie to i tak jest bez znaczenia smile.gif A po co mi to wiedzieć? Jak mi będzie trzeba rzutować typ bo mi stringa zwraca z posta zamiast inta to i tak mu rzucę (int) i święto lasu.

Pozdrawiam.

@EDIT tam na dole kkuba
ja sobię piszę tak jak mi wygodniej i się dobrze z tym czuję, grzebiesz w moim kodzie że mówisz że to jest nonsens? Nie. To wyluzka i klep swój kod, co się mojego czepiasz, jak go nie widzisz ? smile.gif pozdro.
kkuba
Cytat
Problem jest tylko taki, że nie można być konsekwentnym i stosować tylko jednego zapisy. Spróbujcie na ten przykład:

fputs($handle, $zmienna.'\n');

ni da rady ;]


A, nie wspomnialem - tylko w tym przypadku stosuje ", ale i tak prawie w ogole : )

ps. Widzę, że wątek oblegany jest przez tłumy : d


//edit:
Cytat
Pisz tak jak Ci wygodnie, ja czasami zapytanie do sqla w ogole piszę np tak:
[...]
Czasami piszę tak


Hm.. Nie wiem co na to odpisać.. non sens? Kod staje się mniej czytelny, musisz patrzeć czy użyłeś tu apostrof czy cudzysłów.. bez sensu.
michalg
Kiedyś czytałem jakieś benchmarki, w których ktoś udowadniał, że ' jest szybsze od ". Ale takie mikroptymalizacje są bez sensu, bo i tak niczego nie zmienią w prawdziwym programie.

A co do tego, czy używać ' czy ", to jest jeszcze jedna kwestia - jeżeli IDE/edytor na to pozwala(PHPEclipse przykładowo), to można ustawić osobne style (np kolor) dla stringów w zależności czy są w ' czy ". Wtedy używając np " do napisów, a do tablic ' można uzyskać większą czytelność (IMHO), np:

  1. <?php
  2. echo "Witaj ".$osoba['imie']." w moim programie";
  3. ?>


albo

  1. <?php
  2. $tablica = array('klucz1' => "wartosc1", 'klucz2' => "wartosc2");
  3. ?>
l0ud
Ja tam zawszę stosuję ' do stringów, wg mnie jest to po prostu bardziej czytelniejsze - przynajmniej edytor koloruje to poprawnie i wiadomo o co chodzi.

Cytat
Problem jest tylko taki, że nie można być konsekwentnym i stosować tylko jednego zapisy. Spróbujcie na ten przykład:

fputs($handle, $zmienna.'\n');

ni da rady ;]


  1. <?php
  2. fputs($handle, $zmienna.PHP_EOL);
  3. ?>
pi_wo
Cytat(l0ud @ 2.04.2009, 20:31:26 ) *
Ja tam zawszę stosuję ' do stringów, wg mnie jest to po prostu bardziej czytelniejsze - przynajmniej edytor koloruje to poprawnie i wiadomo o co chodzi.



  1. <?php
  2. fputs($handle, $zmienna.PHP_EOL);
  3. ?>


no tak, nie na darmo mówią, że człowiek uczy się całe życie. blinksmiley.gif od jutra uczę się tej listy na pamięć.
zegarek84
a może jeszcze takie cosik:
  1. kodzik php; ?>
  2. jakiś tekścik i teraz wtrącona zmienna: <?= $wartosc ?> coś sobie popiszemy nie wiadomo co <?= $a_jednak ?> ......
  3. <?php dalszy kodzik
  4.  
  5. // czyli coś na styl:
  6.  
  7. for($i=0;$i<50;++$i)
  8.    {?>
  9.        ble ble <?= $i ?> cosik
  10.    <?php }
  11.  
  12. // lub ten sam a inny zapis - w każdym bądź razie też opuszczony parser php:
  13.  
  14. for($i=0;$i<50;++$i)
  15.    {?>
  16.        ble ble <?php echo $i;?> cosik
  17.    <?php }

Wyskakiwanie z HTMLa
kazag
Czy przy niewielkich projektach to w ogole wpływa na prędkość? Jak bardzo zauważalna jest ta jedna mikrosekunda dla użytkownika? Sprawdzałem - nie zdąze sobie zrobić kawy.

btw ja uzywam, jak się okazuje, najmniej efektywnego sposoby "lol".$lol."lol"; czemu? Tak jakoś mi weszło, ale jestem samouk, więc mozliwe, ze to błąd...
kkuba
hm.. powiem Ci, że pomysł dość ciekawy ; p
Zrobić sobie jakąś wygodną funkcje do tego i wio! ; )
Spawnm
Cytat(belliash @ 3.04.2009, 12:52:17 ) *
ja odpowiem dosyc przewrotnie...

Jezeli zalezy Ci na szybkosci to najszybsze w tym przypadku byloby:

implode($zmienna, array('text1', 'text2'));

Dlaczego? Implode tylko raz alokuje pamiec przez co jest mniej wiecej dwukrotnie szybszy niz operator kropki...

jak widzisz implode tego : echo 'dasfg'.$x.'lalalal'.$user['name'].'sdf sf'.$enemy['stat']; ,
tak aby było szybciej ?
rzymek01
cała różnica pomiędzy ' a " jest taka, że przy " jest wysilany dodatkowo interpreter w celu przeszukania znaków specjalnych, zmiennych, więc apostrof bedzie szybszy, jednak czy to zauwazalna różnica to tego nie wiem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.