Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja kodu. Proste sztuczki., Czyli jak, za pomocą sztuczek, łatwo zoptymalizować kod
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Witam,

Proponuję podzielić się pomysłami na szybkie optymalizacje kodu za pomocą sztuczek:

na początek:
  1. <?php
  2. // do sprawdzania, czy istnieje element w tablicy:
  3. $cars = array( "bmw", "fiat", "volvo", "honda", ... );
  4.  
  5. // zamiast 
  6. if ( in_array('honda', $cars) ){ // ... 
  7.  
  8. // szybciej działa
  9. if ( isset($cars['honda'] ){ // ponieważ isset to nie funkcja tylko konstrukcja języka PHP
  10. ?>


podobnie:
  1. <?php
  2. // zamiast 
  3. if ( strlen( $md5string ) <= 32 ) { //....
  4.  
  5. // szybciej działa:
  6. if ( !isset( $md5string{32} ) ) { // wyjaśnienie jak wyżej
  7. ?>


trochę z innej beczki:
  1. <?php
  2. // zamiast 
  3. include( "skrypt.php" );
  4.  
  5. // szybciej działa
  6. include( "./skrypt.php" ); // ponieważ nie szuka w `include_path`
  7. ?>


lub
  1. <?php
  2. // zamiast 
  3. $i++;
  4.  
  5. // szybciej działa:
  6. ++$i; // ponieważ parser nie tworzy zmiennej tymczasowej
  7. ?>


.. macie jakieś sztuczki, którymi chcecie się podzielić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Ups... fakt, pospieszyłem się trochę (a miało to być zachęcenie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

powinno być:
  1. <?php
  2. $cars = array( "bmw"=>'1', "fiat"=>'12', "volvo"=>'312', "honda"=>'123', ... );
  3. // zamiast 
  4. if ( array_key_exists('honda', $cars) ){ // ... 
  5. // szybciej działa
  6. if ( isset($cars['honda'] ){
  7. ?>


inne przykłady, oczywiście lepiej
  1. <?php
  2. $count = count($arr);
  3. for( $i=0; $i<$count; $i++){//
  4. ?>

zamiast
  1. <?php
  2. for( $i=0; $i<count($arr); $i++){//
  3. ?>


lub
  1. <?php
  2. // lepiej 
  3. switch ( $car ){
  4. case 'honda':
  5. case 'toyota':
  6. $country = 'japonia';
  7. break;
  8. default:
  9. $country = 'nie japonia';
  10. }
  11.  
  12. // gorzej:
  13. if ( $car == 'honda' || $car == 'toyota' || $car == 'suzuki' ){
  14. $country = 'japonia';
  15. } else {
  16. $country = 'nie japonia';
  17. }
  18. ?>


Ten post edytował Cezar708 30.11.2007, 12:02:36
Go to the top of the page
+Quote Post
pafka
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

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


Cytat(Cezar708 @ 30.11.2007, 12:01:52 ) *
  1. <?php
  2. $count = count($arr);
  3. for( $i=0; $i<$count; $i++){//
  4. ?>


mozesz to zapisac jeszcze krocej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. for( $i=0, $count = count($arr); $i<$count; $i++){//
  3. ?>
Go to the top of the page
+Quote Post
NetJaro
post
Post #4





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Cytat(pafka @ 30.11.2007, 12:26:40 ) *
mozesz to zapisac jeszcze krocej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. for( $i=0, $count = count($arr); $i<$count; $i++){//
  3. ?>

Tylko tutaj własnie chodzi by obliczać to przed pętlą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wtedy skrypt nie musi za każdym razem używać count.
Go to the top of the page
+Quote Post

Posty w temacie
- Cezar708   Optymalizacja kodu. Proste sztuczki.   30.11.2007, 11:09:10
- - kevinsz   Cytat(Cezar708 @ 30.11.2007, 11:09:10...   30.11.2007, 11:45:36
- - Cezar708   Ups... fakt, pospieszyłem się troch...   30.11.2007, 12:01:52
|- - Jojo   Cytat(Cezar708 @ 30.11.2007, 12:01:52...   30.11.2007, 12:09:32
|- - pafka   Cytat(Cezar708 @ 30.11.2007, 12:01:52...   30.11.2007, 12:26:40
|- - NetJaro   Cytat(pafka @ 30.11.2007, 12:26:40 ) ...   30.11.2007, 16:45:33
|- - pafka   Cytat(NetJaro @ 30.11.2007, 16:45:33 ...   1.12.2007, 00:51:34
- - Cezar708   Cytat(Jojo @ 30.11.2007, 12:09:32 ) W...   30.11.2007, 12:31:32
- - sticker   [PHP] pobierz, plaintext <?php// zamiast $i++;...   30.11.2007, 17:08:26
|- - Jabol   Cytat(sticker @ 30.11.2007, 18:08:26 ...   30.11.2007, 20:39:31
- - sticker   Wcale z tego nie wynika, drzewo budowane jest na p...   30.11.2007, 20:53:20
- - Kreton   Czyżby temat zaczerpnięty z http://www.jarzebski....   30.11.2007, 21:56:59
- - nospor   CytatTylko tutaj własnie chodzi by obliczać to prz...   30.11.2007, 22:29:21
- - sticker   a ja dodam to po to chyba ten wątek był profilowa...   30.11.2007, 23:12:38
- - Bastion   @Nospor : do podejrzanych należy dodać : http://i...   1.12.2007, 00:33:54
- - prgTW   ++$i: miejsce w pamięci najpierw jest in...   1.12.2007, 14:54:53
|- - phpion.com   Cytat(prgTW @ 1.12.2007, 16:54:53 ) a...   1.12.2007, 15:28:24
- - prgTW   Aaa, sorry, siedze i pisze program w c++ i stąd ta...   1.12.2007, 15:45:25
- - Kreton   CytatRownie dobrze mozna powiedziec ze twoj link p...   1.12.2007, 23:01:48
- - sticker   Cytat(prgTW @ 1.12.2007, 14:54:53 ) +...   2.12.2007, 01:37:47
- - prgTW   [PHP] pobierz, plaintext <?phpfor($k = 0; $...   2.12.2007, 01:55:58
- - sticker   manual php w komentarzach mówi że http://php....   2.12.2007, 02:03:42
- - prgTW   A od kiedy PHP jest językiem kompilowanym? e...   2.12.2007, 02:07:04
- - sticker   a czy ja napisałem ze jest? nie wydaje mi się ...   2.12.2007, 02:12:52
- - prgTW   Oczywiście że nie, tylko nie ma sensu pi...   2.12.2007, 02:15:17
- - sticker   możesz dla testów puścic 100k i dać wyniki czasowe...   2.12.2007, 02:16:54
- - prgTW   troche potrwa ale wrzuce te 100k elementarnych ite...   2.12.2007, 02:26:29
- - sticker   oak zrobiłem testa dla 100k pre ...   2.12.2007, 02:27:16
- - prgTW   [PHP] pobierz, plaintext <?phpfor($k = 0; $...   2.12.2007, 02:49:55
- - domis86   Ok. To ja mam dla was zadanie Kto najlepiej zopty...   3.12.2007, 04:37:57
- - Cezar708   hmm zastanowiło mnie to i zrobiłem kilka testów: ...   3.12.2007, 11:10:41
- - domis86   Halo? Nikt nie da rady zrobic tego sortowania szy...   3.12.2007, 16:23:38
- - prgTW   [PHP] pobierz, plaintext <?phpfunction getMicro...   3.12.2007, 22:46:21
- - DeyV   Cytatmixed microtime ([ bool $get_as_float ...   4.12.2007, 11:46:15
- - bartek00   Witam, Nalezy zwrocic uwage na ograniczona dziedz...   4.12.2007, 15:08:40
- - domis86   <jupi> W koncu ktos odpowiedzial. Ehh kiepsk...   4.12.2007, 15:12:23


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

 



RSS Aktualny czas: 4.10.2025 - 14:41