Jump to content
php.lv forumi

darba sadaļas offtopiks


Robis

Recommended Posts

Delfīn, saderam, ka c++ sakārtos 1 000 000 veselus skaitļus vairāk kā 10 reizes ātrāk nekā vienalga kas iebāzīs viņus mysql db un sakārtos tur. Derētu es uz 10 reizēm, bet izsaku varbūtību, ka tās varētu būt arī visas 100 reizes.

Link to comment
Share on other sites

  • Replies 357
  • Created
  • Last Reply

Top Posters In This Topic

Ja atņemsi no MySQL laiku datu nolasīšanai no cietā, pieprasījuma sūtīšanu uz DB, query apstrādi, datu atpakaļ saņemšanu, tad tas pats vien sanāks.

 

Ja taisīsi C++ datu ielasi no faila, tad tas būs aptuveni tas pats kas pieprasījums uz MySQL.

Edited by marrtins
Link to comment
Share on other sites

PHP un threadings? Vēsi. Palaižam vairākus procesus un būs. Plus vēl var izplatīt pa vairākām kastēm. Lielākā problēma tos procesus sinhronizēt un uzraudzīt ko kurš dara, kurš atmirst softwariskas vai hardwariskas kļūdas gadījuma, bet tas būtu tikpat aktuāli jebkurai citai programmēšanas videi.

Link to comment
Share on other sites

marrtins, nekādu problēmu... PID faili ar aktuālu stāvokli :)

C++ threadam tas būtu - pointeri... turklāt ja neatsaista procesus, tad viens memory leaks un visa sistēma gar zemi... savukārt decentralizēta sistēma vnk ownēs visus pārējos.

 

system crawler <-> [1..N] data crawlers <-> [1..N] DB servers

 

=====

 

betons, es nešaubos, ka C++ sakārtos ātrāk... bet kā tu iedomājies, kur tos ciparus C++ ņems, ja ne no diska!? Vispār tavs piemērs nonsense... Šeit it runa par datu savācēju... viņam nekas nav jāsortē! Un es pat teiktu tam datu-savācējam to nekādā gadījumā nevajadzētu darīt:

- pieprasījums

- texta/datu pārsēšana

- saglabāšana

 

Sortēšanu un pēc-apstrādi lai veic SQL + attiecīgs serviss uz dedicated servera.

Link to comment
Share on other sites

PHP tīru php realizāciju.

 

Kurš normāls cilvēks raksta savu sortēšanas funkciju tīrā php? Normāli būtu izmantot standartbibliotēkas piedāvātās funkcijas (sort, ksort, usort, ...). C++'ā tu taču arī netaisies implementēt savu fju, bet jau gatavu izmantot.

 

Delfīn, saderam, ka c++ sakārtos 1 000 000 veselus skaitļus vairāk kā 10 reizes ātrāk

Labāk saderam, ka vai nu es, vai Delfins to crawleri uzrakstīt vairāk kā 10 reizes ātrāk un optimālāk iekš php nekā tu iekš C++ :)

Link to comment
Share on other sites

Kurš normāls cilvēks raksta savu sortēšanas funkciju tīrā php? Normāli būtu izmantot standartbibliotēkas piedāvātās funkcijas (sort, ksort, usort, ...). C++'ā tu taču arī netaisies implementēt savu fju, bet jau gatavu izmantot.

Qsort es piedāvāju, lai viegli uztaisīt.

Ja es uzrakstīšu Qsort c++ pats, viņa strādās tuvu STL qsort funkcijas ātrumam, bet PHP rakstīta netuvu tā nestrādās, jo PHP iebūvētās qsort funkcijas ir taisītas c++.

Link to comment
Share on other sites

Vienkāršākais no eksperimentiem:

 

Par zema līmeņa valodu šoreiz izvēlējos paskālu ar FreePascal kompilātoru.

 

Ekvivalentie kodi:

1) Paskāla:

uses crt;
var i,j,k,tt:longint;
 t:longint absolute $40:$6c;
begin
tt:=t;
k:=0;
for i:=1 to 10000 do
 for j:=1 to 10000 do begin
k:=k+1;
 end;
tt:=t-tt;
writeln(tt/18.2:2:2);
end.

 

2)PHP:

 <?php
function microtime_float()
{
 list($usec, $sec) = explode(" ", microtime());
 return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();

$k=0;
for ($i=0;$i<10000;$i++){
 for ($j=0;$j<10000;$j++){
$k+=1;
 }
}


$time_end = microtime_float();
$time = $time_end - $time_start;
echo $time

?>

 

Vidējie laiki:

1) paskāls - 0,44 sekundes

2) PHP - 21,2 sekundes

 

atšķirība 48 reizes.

Link to comment
Share on other sites

<?php
function microtime_float()
{
 list($usec, $sec) = explode(" ", microtime());
 return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();

$k = 100000000;

$time_end = microtime_float();
$time = $time_end - $time_start;
echo $time;
?>

0.0001 sekunde. (0.1 milisekunde).

 

Kā jau Paulinjsh saka - viss ir atkarīgs no algoritma un roku taisnuma..

Link to comment
Share on other sites

bubu, tavs algoritms ir nepareizs.

Algoritmam bija jānosak laiks diviem 10000 cikliem, kuros pa vidu ir viena palielināšanas par 1 darbība.

 

Bet, ja nopietni, tad ekpseriments tikai pierāda to, ka kompilēts kods ir vairākas reizes ātrāks par skripta kodu, itkā jau pašsaprotama lieta, bet škiet ka ne visiem.

Link to comment
Share on other sites

Kāpēc gan lai mans algoritms būtu nepareizs?

Gala rezultāts atšķirās no tava? Vai $k == 100000000 ? Ir. Tātad neatšķirās.

Implementācija jau ir manā (tavā) ziņā - cik es (tu) māku vai nemāku nooptimizē un izdomāt algoritmu, kurš dara to, ko tam jādara (šajā gadījumā - izrēķina skaitli 100000000 mainīgajā $k).

Ja nopietni, tad eksperiments pierāda to, ka tev nav ne jausmas kā un kāpēc lieto valodas, ja jau tu gribi php lietot lai palielinātu skaitli par 1 simts miljonu reižu izmantojot divus ciklus.

 

Jebkurš normāls mūsdienu C/C++ kompilētājs tev to ciklus mierīgi nooptimizētu par vienu konstanti. Tavs eksperiments tikai parāda, cik slikts ir FreePascal kompilētājs :)

Link to comment
Share on other sites

Kāpēc gan lai mans algoritms būtu nepareizs?

Gala rezultāts atšķirās no tava? Vai $k == 100000000 ? Ir. Tātad neatšķirās.

Gala rezultāts atšķīrās.

Algoritma mērķis bija izmērīt laiku diviem 10000 cikliem, nevis k piešķirt 1000000. Tavs algoritms to nedarīja, grūti saprast?

 

Ja nopietni, tad eksperiments pierāda to, ka tev nav ne jausmas kā un kāpēc lieto valodas, ja jau tu gribi php lietot lai palielinātu skaitli par 1 simts miljonu reižu izmantojot divus ciklus.

Nav tiesa. Eksperiments pierāda, ka FP divus 10000 ciklus veic 48 reizes ātrāk kā PHP.

 

 

Jebkurš normāls mūsdienu C/C++ kompilētājs tev to ciklus mierīgi nooptimizētu par vienu konstanti.

Neticu, pierādi.

 

Tavs eksperiments tikai parāda, cik slikts ir FreePascal kompilētājs :)

Un tāpat arī PHP.

 

 

betons, toties tu nevari saprast, ka ja pa vidu būtu wget+parsing+save_db, tad atšķirība laikos būtu pavisam minimāla. Es jau tev lūdzu tādu piemēru... a tu mums iesmērēji 1++

wget un save_db varbūt būs līdzīgāki ātruma izpildē, bet PHP tik un tā būs lenāks, savukārt pārsings un stringu analīze uz c++ vai paskāla būs pāris reizes ātrāka šā vai tā.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...