Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dylemat w czym kodzic :P
Forum PHP.pl > Inne > Hydepark
Stron: 1, 2, 3
mike
Cytat(belliash @ 5.05.2009, 21:32:35 ) *
Ze jak!?
Kolega wspolpracowal kiedys z tablicami asocjacyjnymi? Proponuje porownac np 5cio wymiarowa tablica numeryczna vs 5cio wymiarowa tablica asocjacyjna... Nobla temu kto udowodni że asocjacyjna bedzie szybsza ...
A no tak. Być może ~Jabol trochę uogólnił i przesadził ale tablice asocjacyjne to implementacja tablic mieszających, które przy bardzo dobrej funkcji skrótu, w dobrych warunkach mogą być dużo szybsze nić indeksowane numerycznie.
Nie mniej jednak, uogólnianie tutaj nie jest wskazane.
-=Peter=-
Cytat(belliash @ 5.05.2009, 19:32:35 ) *
Nic tylko stek bzdur... Tak jak kiedys slyszalem ze operator kropki jest jedynym slusznym sposobem na laczenie lancuchow i przez to jest uzywany w kazdym projekcie - a to wynika raczej z nie wiedzy ze implode() jest srednio ponad 2-3x szybsze a przy tym tylko raz alokuje pamiec, przy czym kropa wiele razy...


Nie wiem czy masz rację czy nie, ale przeprowadziłem test (dla zaspokojenia ciekawości) i to co napisałeś ma się nijak do rzeczywistości przynajmniej na tym testowym przykładzie:

  1. <?php
  2. function getmicrotime(){
  3.    list($ms, $s) = explode(' ', microtime());
  4.    return ((float)$ms + (float)$s);
  5. }
  6.  
  7. $start = getmicrotime();
  8.  
  9. for($i=0; $i<1000000; $i++){
  10.    $string = 'ala'.' '.'ma'.' '.'kota'.' '.'i'.' '.'cos'.' '.'tam'.' '.'jeszcze';
  11. }
  12.  
  13. $end = getmicrotime();
  14. echo 'wynik dla kropki: '.($end - $start).'<br>';
  15.  
  16. $start = getmicrotime();
  17.  
  18. for($i=0; $i<1000000; $i++){
  19.    $string = sprintf('%s%s%s%s%s%s%s%s%s%s%s%s%s', 'ala', ' ', 'ma', ' ', 'kota', ' ', 'i', ' ', 'cos', ' ', 'tam', ' ', 'jeszcze');
  20. }
  21.  
  22. $end = getmicrotime();
  23. echo 'wynik dla sprintf: '.($end - $start).'<br>';
  24.  
  25. $start = getmicrotime();
  26.  
  27. for($i=0; $i<1000000; $i++){
  28.    '%s%s%s%s%s%s%s%s%s%s%s%s%s';
  29. }
  30.  
  31. $end = getmicrotime();
  32. echo 'wynik dla inicjowania tekstu: '.($end - $start).'<br>';
  33.  
  34. $start = getmicrotime();
  35.  
  36. for($i=0; $i<1000000; $i++){
  37.    $string = implode('', array('ala', ' ', 'ma', ' ', 'kota', ' ', 'i', ' ', 'cos', ' ', 'tam', ' ', 'jeszcze'));
  38. }
  39.  
  40. $end = getmicrotime();
  41.  
  42. echo 'wynik dla implode: '.($end - $start).'<br>';
  43.  
  44. $start = getmicrotime();
  45.  
  46. for($i=0; $i<1000000; $i++){
  47.    array('ala', ' ', 'ma', ' ', 'kota', ' ', 'i', ' ', 'cos', ' ', 'tam', ' ', 'jeszcze');
  48. }
  49.  
  50. $end = getmicrotime();
  51.  
  52. echo 'wynik dla inicjowania tablicy: '.($end - $start).'<br>';
  53. ?>


Mniej więcej za każdym razem uzyskuję takie wyniki na moim dosyć słabym kompie:
Kod
wynik dla kropki: 0.733394861221
wynik dla sprintf: 7.77051281929
wynik dla inicjowania tekstu: 0.288715839386
wynik dla implode: 10.5542991161
wynik dla inicjowania tablicy: 8.17178821564


Czyli sam mechanizm implode jest ok 3x dłuższy, a dochodzi jeszcze czas aby zainicjować tablicę.

Sorki za offtop 8)
Jabol
Czytaj dokładniej. Pisałem, że tablice mieszające są zawsze szybsze od list (gdzie nie można efektywnie zastosować szukania binarnego - oczywiście przy dobrej funkcji hashującej) i tylko czasami od tablic (gdzie szukanie binarne czasami może być wolniejsze od zastosowania tablicy mieszającej). A potem przychodzą tacy którzy nie rozumieją takich podstaw i piszą, że studia to tylko wbijanie sobie do głowy farmazonów. Oczywiście chodzi tylko o problemy w których dziedziną naszego odwzorowania nie są liczby naturalne mniejsze od x. A tablice wielowymiarowe właśnie należą do tej niewielkiej klasy problemów kiedy dziedzina to właśnie liczby naturalne mniejsze od...
marcio
Cytat
Zreszta troche ciezko Ci pomóc bo masz problem z przekazem swojego dziwnego problemu.

To chyba ty masz problem ze zrozumieniem go.

@pejjot nie mam zamiaru inwestowac w interpunkcje jak cie irytuja moje poste nie czytaj ich proste tongue.gif nikt ci nie kaze.

Ad phpion & Ship to w sumie napewno lepiej sie na tym znacie odemnie i tym bardziej ze nigdy nie kodzilem ani w C# ani w Javie lecz wydaje mi sie ze IDE C# tez jest fajne,z dokumentacja nie wiem jak jest bo nie sprawdzalem chodz mysle ze bedzie ona gorsza od tej od Javy.
Przeciez C# tez jest w pelni obiektowy.

Nie wiem jak zaczne kodzic w C# i mi on nie podejdzie najwyzej zostane przy samym Delphi(i oczywscie przy ukochanym PHP) a jak nie moge zawsze zaczac Jave.

Cytat
Powiem Ci (@marcio), że mi kompletnie to nie leży. Chociażby taka pierda jak odwoływanie się do składowych poprzez bezpośrednie obiekt.Text. Zdecydowanie wolę obiekt.getText()

W sumie racja obiekt.getText() jest bardziej takie PHP-owe w sumie tez trudno bedzie mi sie przyzwyczaic do obiekt.Text bez standartowych () i get&set.

Jednak w Delphi jak i w C# tak samo to wyglada obiekt.Text a samo VCL od .Net duzo sie nie rozni wiec mysle ze nie bede mial sporych problemow jesli w ktoryms z nich czegos nie zrozumie a od javy jednak pisanie samego API sie rozni.

Ogolnie dziekuje ze ktos pomogl,pomaga i bedzie pomagal inni poprostu wola czepiac sie glupot mysle ze jak bym zmienial jezyk co kilka dni bo cos mi w nim nie pasi byloby gorsze niz dobre zastanowienie sie nad jezykiem i w miedzy czasie poswiecic troche nauki na niego.

P.S oczywiscie nie urazam sie.
mike
I w całym projekcie raz łączysz stringi? Pewnie tylko razu używasz pętli i maksymalnie dwa razy if...else tongue.gif
Może nie wykonujesz tych czynności milion razy ale więcej niż raz tongue.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.