В Срд, 20/01/2010 в 08:54 +0300, Alexey Pechnikov пишет: > Hello! > > On Tuesday 19 January 2010 23:15:25 Oleg Tsymaenko wrote: > > > Итого в 40 раз медленнее перла запускается ;-) Вычеркиваем? :-) > > > > (IMHO) некорректный тест и некорректные выводы > > По аналогии: > > > > $ echo '#include "stdio.h"' >hello.c > > $ echo 'main(){printf("\n");}' >>hello.c > > $ gcc hello.c -o hello > > $ time ./hello > > > > real 0m0.001s > > user 0m0.000s > > sys 0m0.000s > > Уточним: > > $ time for i in `seq 1 10`;do ./hello; done > real 0m0.021s > user 0m0.000s > sys 0m0.020s > > А можно и вот так: > > $ diet gcc hello.c -o hello > $ time for i in `seq 1 10`;do ./hello; done > real 0m0.014s > user 0m0.000s > sys 0m0.008s > > > > > у меня "C" в 7 раз быстрее perl... "вычеркиваем" perl!!! > > В зависимости от задачи. Бывает что и да, вычеркиваем. > > > ну и на закуску "вычёркиваем" php и ruby > > > > time php -r 'echo "\n";' > > real 0m0.042s > > time ruby -e 'puts("")' > > real 0m0.009s > > Из этого растут костыли под названием fast-cgi, изобретенные > пхпистами, которые прикручиваются ради компенсации тормозного > запуска пхп-интерпретатора. Наличие костылей позволяет убедиться > что проблема и в самом деле есть.
1) fast-cgi изобретён не "пхпистами" и не для пхп 2) php-cgi прожорливей чем mod_php 3) php запускается под fast-cgi не для увеличения производительности а в целях безопасности > А ruby вы зря в один ряд с пыхом поставили: > $ time echo ""|ruby > > real 0m0.012s > user 0m0.004s > sys 0m0.004s > Не буду ставить пых, ибо он безобразие в виде апач за собой тянет, > но по остальным тестам получается, что у вас машинка вдвое шустрее, > так что руби запускается на порядок быстрее пхп (у меня частота проца > снижена вдвое, т.к. я предпочитаю тишину, а спешить мне некуда). php-cli ставится без apache. aptitude install php5-cli Теперь из личного опыта работы с php: В реальной жизни не особо сказывается на производительности как запущен php. Это cgi/fastcgi или mod_apache. Дело в том что в реальных проектах основные затраты времени на доступ к СУБД и на выполнение кода(а не на подъем интерпретатора или компиляцию). Это конечно можно оспаривать но так говорит мой опыт. Далее я привожу некоторые замеры производительности но не для того чтобы "вычеркнуть" какой то язык а только для того чтобы показать не состоятельность идеи "вычеркивать" что либо просто проводя тесты производительности. Примеры с циклом в 100,000,000 итераций (src ниже): -------+----------+-----+--------------------------- язык время(s) K компилятор/интерпретатор -------+----------+-----+--------------------------- C 0.315 1 gcc 4.3.4 (с "-O1" ) java 30.520 97 sun-java-1.5.0 (libgcj4.3.4) perl 72.149 229 perl (v5.10.1) php 71.872 228 php-cli(5.2.11 Zend-2.2.0) python 110.251 350 python(2.5.4) ruby 177.122 562 ruby(1.8.7) "K" это отношение времени работы на текущем языке к времени работы на "C" Например для perl : K=72.149/0.315=229 P.S. Я не уверен насчёт корректности примеров на python и ruby так как не имею опыта программирования на этих языках P.P.S. Во время работы скрипта на python машина полезла в своп!!! ps aux |grep python tsyma 21121 85.6 75.8 1577236 1574520 pts/7 R+ 11:17 0:42 python ./hello.py !!! Это 1.5Gb памяти :) !!! ============= hello.c ========================== #include "stdio.h" main(){ int i; double x; for (i=0,x=0;i<100000000;i++) x+=1.1*i; printf("i=%d; x=%.2f\n",i,x); } ============= hello_java.java ================== public class hello_java { public static void main(String[] args) { int i; double x; for (i=0,x=0;i<100000000;i++) x+=1.1*i; System.out.println("i="+i+"; x="+x); } } ============= hello.pl ========================= for($i=1,$x=0;$i<100000000;$i++){ $x+=1.1*$i; } printf("i=%d; x=%.2f\n",$i,$x); ============= hello.php ======================== <?php for ($i=0,$x=0;$i<100000000;$i++) $x+=1.1*$i; printf("i=%d; x=%.2f\n",$i,$x); ============= hello.rb ========================= x=0 i=0 while (i<100000000) x+=1.1*i i+=1 end puts "i=#{i}; x=#{x}" ============= hello.py ========================= x=0 for i in range(0,100000000): x+=1.1*i i+=1; print "i=%d;" % i, " x=%.2f" % ================================================ -- Oleg Tsymaenko <ts...@lafox.net> TSYM1-UANIC -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org