betons Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
marrtins Posted January 8, 2008 Report Share Posted January 8, 2008 (edited) 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 January 8, 2008 by marrtins Link to comment Share on other sites More sharing options...
marrtins Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
Delfins Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
bubu Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
betons Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
Delfins Posted January 8, 2008 Report Share Posted January 8, 2008 betons, par ko tu cepies.. ??? Pēdējais tavs teikums arī tā nav saprotams... ko tu gribēji pateikt... Link to comment Share on other sites More sharing options...
marrtins Posted January 8, 2008 Report Share Posted January 8, 2008 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++. Delīrijs? Link to comment Share on other sites More sharing options...
Paulinjsh Posted January 8, 2008 Report Share Posted January 8, 2008 pilnīgas muļķības - viss ir atkarīgs no algoritma un roku taisnuma.. Link to comment Share on other sites More sharing options...
betons Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
bubu Posted January 8, 2008 Report Share Posted January 8, 2008 <?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 More sharing options...
betons Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
bubu Posted January 8, 2008 Report Share Posted January 8, 2008 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 More sharing options...
Delfins Posted January 8, 2008 Report Share Posted January 8, 2008 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++ Link to comment Share on other sites More sharing options...
betons Posted January 9, 2008 Report Share Posted January 9, 2008 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 More sharing options...
Recommended Posts