Страницы

среда, 3 июня 2009 г.

Инструменты

Дык, там справа есть ссылка "Сравнения языков программирования", перейдя по ней можно подробно ознакомиться с характеристиками 72 языков программирования при реализации различнх алгоритмов. Вообщем довольно интересное чтиво. Меня лично интересовали Java,C++,C,Python,php и мой любимый perl. Perl почти по всем параметрам ,я б сказал значительно проигрывает своим прямым конкурентам ;(. А php оказывается круче python-а, но хуже python3- а, что не может не радовать. Вот...

Сюрприз номер 1:

А теперь для меня откровением стало,что результаты java, хоть и хуже Си,но одного порядка с ним,то есть результаты в пределах секунд,но не десятков секунд!!!

Сюрприз номер 2:

С++ рвет - СИ ,вот это для меня откровение ! Хоть пересматривай свои взгляды на жизнь!правда памяти Си потребляет все таки поменьше,но по времени проигрывает! ;(


p.s У меня осталось слабая надежда,что если поправить коды тестов, то результаты могут быть другие,но все же если вспомнить ,что к примеру perl и php синтаксисом похожи становится обидно .Тенденция заметная....




Результаты:

C GNU gcc measurements

Program & Logs Time secs Memory KB Size B N
binary-trees18.03227,900963 20
chameneos-redux12.295801663 6,000,000
fannkuch17.05568937 12
fasta5.293961221 25,000,000
k-nucleotideMake Error
1141 25,000,000
mandelbrot6.0328,032879 16,000
meteor-contest0.0003066 2,098
n-body20.854121429 50,000,000
pidigits3.761,000541 10,000
regex-dna32.17124,7081099 5,000,000
reverse-complement1.48125,192722 25,000,000
spectral-norm2.996721139 5,500
thread-ring168.364,548487 50,000,000

Java 6 -server measurements

Program & Logs Time secs Memory KB Size B N
binary-trees19.64269,744603 20
chameneos-redux14.7017,2361429 6,000,000
fannkuch20.1412,0921150 12
fasta8.3111,1081240 25,000,000
k-nucleotide25.81881,1401348 25,000,000
mandelbrot11.1047,604903 16,000
meteor-contest0.301365177 2,098
n-body23.8811,1161424 50,000,000
pidigits6.9313,748938 10,000
regex-dna15.46563,6881534 5,000,000
reverse-complement3.02472,144592 25,000,000
spectral-norm4.0711,168950 5,500
thread-ring16.7196,404432 50,000,000

Perl measurements

Program & Logs Time secs Memory KB Size B N
binary-trees1346.11643,496541 20
chameneos-redux No program


fannkuch4679.111,664348 12
fasta363.292,128934 25,000,000
k-nucleotide248.51709,264359 25,000,000
mandelbrot1464.31290,392550 16,000
meteor-contest No program


n-body1996.452,1361140 50,000,000
pidigits8.083,312385 10,000
regex-dna47.06561,380440 5,000,000
reverse-complement38.17418,388298 25,000,000
spectral-norm1907.112,584334 5,500
thread-ring498.31488,604489 50,000,000

PHP measurements

Program & Logs Time secs Memory KB Size B N
binary-trees498.731,199,7561089 20
chameneos-redux No program


fannkuch1245.4417,580745 12
fasta264.163,3961030 25,000,000
k-nucleotide144.96247,9001268 25,000,000
mandelbrot714.85111,076863 16,000
meteor-contest2886.7311,3242582 2,098
n-body1236.793,4121255 50,000,000
pidigits7.628,524537 10,000
regex-dna47.30219,512449 5,000,000
reverse-complement7.09444,444343 25,000,000
spectral-norm296.7616,6241193 5,500
thread-ring No program



Python measurements

Program & Logs Time secs Memory KB Size B N
binary-trees2289.65221,232365 20
chameneos-redux221.852,968869 6,000,000
fannkuch4281.932,752387 12
fasta234.222,800779 25,000,000
k-nucleotide552.68439,196475 25,000,000
mandelbrot786.5318,488425 16,000
meteor-contest12.823,3081198 2,098
n-body1391.072,7961027 50,000,000
pidigits7.425,256476 10,000
regex-dna29.25188,200342 5,000,000
reverse-complement7.63452,356288 25,000,000
spectral-norm1108.453,324378 5,500
thread-ring252.597,148287 50,000,000

Python 3 measurements

Program & Logs Time secs Memory KB Size B N
binary-trees701.80271,192433 20
chameneos-redux221.484,220866 6,000,000
fannkuch4631.704,048400 12
fasta321.664,068788 25,000,000
k-nucleotide711.29840,332487 25,000,000
mandelbrot2104.705,512777 16,000
meteor-contest11.054,4241311 2,098
n-body1568.274,0761026 50,000,000
pidigits36.594,688437 10,000
regex-dna32.15376,652349 5,000,000
reverse-complement30.951,079,408294 25,000,000
spectral-norm1404.044,536366 5,500
thread-ring269.878,452288 50,000,000

C++ GNU g++ measurements


Program & Logs Time secs Memory KB Size B N
binary-trees5.71177,152888 20
chameneos-redux4.741,0721845 6,000,000
fannkuch14.061,1161186 12
fasta6.217401266 25,000,000
k-nucleotide13.61134,6481418 25,000,000
mandelbrot6.3729,396858 16,000
meteor-contest0.0005051 2,098
n-body20.747641428 50,000,000
pidigits3.781,724650 10,000
regex-dna9.01264,0562225 5,000,000
reverse-complement1.18245,0521098 25,000,000
spectral-norm2.999961114 5,500
thread-ring151.404,896588 50,000,000

понедельник, 1 июня 2009 г.

Осторожно mysql!!!

Вот иногда бывает!!!Это сообщение типа заметки об mysql, чтоб всегда помнил и не забывал.Итак есть две таблицы

desc search_words;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| sw_id | int(11) | NO | PRI | NULL | auto_increment |
| sw_word | varchar(255) | YES | MUL | NULL | |
+---------+--------------+------+-----+---------+----------------+

и

desc search_words_articles_count;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| swac_swid | int(11) | YES | | NULL | |
| swac_aid | int(11) | YES | | NULL | |


вроде все ясно swac_swid это sw_id, sw_word текстовое значение слова
далее вроде бы безобидный запрос - требуется найти количество вхождений конкретных слов в ресурсах ,которые указаны в search_words_articles_count :

SELECT swac_swid,count(*) FROM search_words_articles_count WHERE swac_swid IN (SELECT sw_id FROM search_words WHERE sw_word IN ('из','нам','столь','до')) GROUP BY swac_swid;

в таблицах search_words_articles_count,search_words примерно 22 млн и 66 тыс записей соответсвенно .
Результата предыдущего запроса я не дождался!!!!
За то :
mysql> SELECT * FROM search_words WHERE sw_word IN ('из','нам','столь','до');
+-------+------------+
| sw_id | sw_word |
+-------+------------+
| 2869 | столь |
| 1569 | до |
| 2671 | из |
| 2059 | нам |
+-------+------------+
4 rows in set (0.07 sec)
а потом запустив запрос :
mysql> SELECT swac_swid,count(*) FROM search_words_articles_count WHERE swac_swid IN (2869,1569,2671,2059) GROUP BY swac_swid;
+-----------+----------+
| swac_swid | count(*) |
+-----------+----------+
| 1569 | 27833 |
| 2059 | 16504 |
| 2671 | 73176 |
| 2869 | 7733 |
+-----------+----------+
4 rows in set (6.42 sec)

получил результат ,который и хотел!!!