Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] Co szybsze? " czy '?, Strasznie męcząca sprawa...
kkuba
post 2.04.2009, 16:42:25
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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. 

Ten post edytował kkuba 2.04.2009, 16:45:32
Go to the top of the page
+Quote Post
Spawnm
post 2.04.2009, 16:45:40
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




pierwsze 2 są ok, tak samo pewnie będą działać więc jak ci wygodniej.
a 3 jest fee tongue.gif
Go to the top of the page
+Quote Post
kkuba
post 2.04.2009, 16:49:12
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Zyx
post 2.04.2009, 16:52:17
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Spawnm
post 2.04.2009, 16:55:43
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




i bardzo fajnie smile.gif
w 1 łatwiej o analizę kodu , ale pamiętajmy że i 2 jest poprawny.
Go to the top of the page
+Quote Post
kkuba
post 2.04.2009, 16:56:54
Post #6





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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 : )
Go to the top of the page
+Quote Post
Spawnm
post 2.04.2009, 17:00:38
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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
Go to the top of the page
+Quote Post
kkuba
post 2.04.2009, 17:05:32
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
TomASS
post 2.04.2009, 17:10:09
Post #9





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


@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.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 2.04.2009, 17:14:10
Post #10





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Tu masz moj post sprzed lat o tym wlasnie temacie, z kodem do testow: http://forum.php.pl/index.php?showtopic=56024&hl=


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
kkuba
post 2.04.2009, 17:15:30
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Spawnm
post 2.04.2009, 17:23:14
Post #12





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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

Ten post edytował Spawnm 2.04.2009, 17:24:15
Go to the top of the page
+Quote Post
mls
post 2.04.2009, 18:07:07
Post #13





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
TomASS
post 2.04.2009, 18:11:21
Post #14





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
pi_wo
post 2.04.2009, 19:00:50
Post #15





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 18.03.2009

Ostrzeżenie: (0%)
-----


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 ;]

Ten post edytował pi_wo 2.04.2009, 19:02:07
Go to the top of the page
+Quote Post
cojack
post 2.04.2009, 19:13:54
Post #16





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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.

Ten post edytował cojack 2.04.2009, 19:30:49


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
kkuba
post 2.04.2009, 19:14:06
Post #17





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 6.07.2008
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kkuba 2.04.2009, 19:16:43
Go to the top of the page
+Quote Post
michalg
post 2.04.2009, 19:22:00
Post #18





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował michalg 2.04.2009, 19:26:27
Go to the top of the page
+Quote Post
l0ud
post 2.04.2009, 19:31:26
Post #19





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
pi_wo
post 2.04.2009, 22:05:33
Post #20





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 18.03.2009

Ostrzeżenie: (0%)
-----


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ęć.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 13:25