?

Log in

Mar. 12th, 2008

рабом тебя делает не работодатель, а кредитор

Это заговор

Вам стоило бы жить в городе Лондон
Столица туманного Альбиона - город дорогой, богемный и прохладный. Англичане дотошны и хмуры. Но вы любите дорогие магазины, большие фестивали и роскошные клубы. Ваш доход позволяет вам жить в таком городе. Так что вперед, start to learn english and welcome to the capital of Great Bririan! :)
Пройти тест
весь журнал перемещён в http://blog.mocksoul.ru. Все новые записи будут там, здесь ничего больше не будет.

whole journal moved to http://blog.mocksoul.ru. All new records would be where.

lj wasted

Почему можно найти более умных программистов, пишущих на Python, гораздо чаще чем умных программистов пишущих на Java?

читайCollapse )

Benchmark Java, C++, Python, Perl and PHP

Шатался по инету в поисках простого графика скорости языков программирования при выполенении тривиальных задач. Запарился. Либо нет графиков (и, соответственно, самих тестов - только полемика), либо тесты безнадёжно устаревшие (ну кто сейчас пишет на php 4.1? или python 1.x? или java 1.3.x?). Посему...

... пляшем с бубном вокруг языков программирования. Результаты ошеломляют =))).
Сравнительное тестирование java, C++, Python, PHP и Perl - 6 тестов - IO, List, Hash, Console, No, Speed..

Результаты интересные =)


1. IO Test. Суть - впихнуть в файл циферки от 1 до 1 млн. Тривиально =))).

Значитс.. сёрсы:
PHP: test.php:
#!/usr/bin/php
<?php

$fp = fopen('/tmp/iotest', 'wb');
for ($i = 0; $i < 1000000; $i++)
{
fwrite($fp, $i);
}
fclose($fp);

?>


JAVA: test.java
import java.io.*;

public class test
{
public static void main(String[] args)
{
try
{
File f = new File("/tmp/iotest");
PrintWriter pw= new PrintWriter(
new BufferedWriter(
new FileWriter(f)));
for (int i = 0; i < 1000000; i++)
{
pw.print(i);
}
pw.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
(p.s. в гробу я видел эту яву)

C++: test.cpp
#include  #include  using namespace std;  int main(int argc,char *argv[]) { 	ofstream out; 	out.open("/tmp/iotest"); 	for(int i=0;i<1000000;i++) 	{ 		out<<i; 	} 	out.close(); } 
(p.s. все гениальное просто)

PYTHON: test.py
#!/usr/bin/python

f = open('/tmp/iotest','wb');
for i in xrange(1000000):
f.write(str(i));
f.close()
(p.s. нет, пожалуй все гениальное - очень просто +))

PERL: test.pl
#!/usr/bin/perl

open($F,">/tmp/iotest");
for $i (0 .. 1000000-1)
{
print $F "$i";
}
close($F);
(p.s. приснится - кошмаррррр)

РЕЗУЛЬТАТЫ ПЕРВОГО ТЕСТА (IO)
Все комментарии - в конце поста. Пока нет слов =).
C++0.2s
 
Java0.5s
 
Perl0.6s
 
Python2.1s
 
PHP4.4s
 



2. Hash Test. Создаём массивчики.

PHP: test.php:
#!/usr/bin/php
<?php

for ($i = 0; $i < 6000; $i++)
{
$x = array();
for ($j = 0; $j < 1000; $j++)
{
$x[$j] = $i;
$x[$j];
}
}

?>


PYTHON: test.py:
#!/usr/bin/python
for i in range(6000):
x={}
for j in range(1000):
x[j]=i
x[j]


JAVA: test.java:
import java.util.*;

public class test
{
public static void main(String[] args)
{
for (int i = 0; i < 6000; i++)
{
Map x = new HashMap();
for (int j = 0; j < 1000; j++)
{
Integer I=new Integer(i);
Integer J=new Integer(j);
x.put(I,J);
x.get(I);
}
}
}
}


C++: test.cpp:
#include  #include  using namespace std;  int main(int argc,char *argv[]) { 	for (int i = 0; i < 6000; i++) 	{ 		map<int, int> x; 		for (int j = 0; j < 1000; j++) 		{ 			x[i]=j; 			x[i]; 		} 	} }


PERL: test.pl:
#!/usr/bin/perl

for $i (0 .. 6000-1)
{
%x=();
for $j (0 .. 1000-1)
{
$x{$j}=$i;
$x{$j};
}
}


РЕЗУЛЬТАТЫ ВТОРОГО ТЕСТА (Hashing)
Java1.0s
 
C++1.3s
 
PHP3.1s
 
Python4.1s
 
Perl7.7s
 



3. Console Test. Скорость выплевывание инфы в консоль. Отправлялось все в /dev/null, дабы не зависить от скорости терминала.

PHP: test.php:
#!/usr/bin/php
<?php

for ($i = 0; $i < 1000000; $i++)
{
echo $i . "\n";
}

?>


PYTHON: test.py:
#!/usr/bin/python

for x in xrange(1000000):
print x


C++: test.cpp:
#include   int main(int argc,char *argv[]) { 	for(int i=0;i<1000000;i++) 	{ 		std::cout << i << std::endl; 	} }


JAVA: test.java:
public class test
{
public static void main(String[] args)
{
for (int i = 0; i < 1000000; i++)
{
System.out.println(i);
}
}
}


PERL: test.pl:
#!/usr/bin/perl

for $i (0 .. 1000000-1)
{
print "$i\n"
}


РЕЗУЛЬТАТЫ ТРЕТЬЕГО ТЕСТА (Console)
Perl0.6s
 
C++0.8s
 
PHP1.4s
 
Python1.7s
 
Java3.0s
 



4. List Test. Заполняем списки.

PHP: test.php:
#!/usr/bin/php
<?php

for ($i = 0; $i < 3000; $i++)
{
$v = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
for ($j = 0; $j < 1000; $j++)
{
array_push($v, $j);
$v[$j];
}
}

?>


PYTHON: test.py:
#!/usr/bin/python
for i in range(3000):
v=['a','b','c','d','e','f','g']
for j in range(1000):
v.append(j)
v[j]


PERL: test.pl:
#!/usr/bin/perl
for $i (0 .. 3000-1)
{
@v=('a','b','c','d','e','f','g');
for $j (0 .. 1000-1)
{
push(@v,$j);
$v[j];
}
}


JAVA: test.java:
import java.util.*;

public class test
{
public static void main(String[] args)
{
List initial = new ArrayList();
initial.add("a");
initial.add("b");
initial.add("c");
initial.add("d");
initial.add("e");
initial.add("f");
initial.add("g");

for (int i = 0; i < 3000; i++)
{
List v = new ArrayList(initial);
for (int j = 0; j < 1000; j++)
{
v.add(new Integer(j));
v.get(j);
}
}
}
}


C++: test.cpp:
#include  #include  using namespace std;  int main(int argc, char *argv[]) { 	vector initial;
initial.push_back(1);
initial.push_back(2);
initial.push_back(3);
initial.push_back(4);
initial.push_back(5);
initial.push_back(6);
initial.push_back(7);

for (int i = 0; i < 3000; i++)
{
vector v(initial);
for (int j = 0; j < 1000; j++)
{
v.push_back(j);
v[i];
}
}
}


РЕЗУЛЬТАТЫ ЧЕТВЕРТОГО ТЕСТА (List)
C++0.2s
 
Java0.4s
 
Perl1.7s
 
Python2.0s
 
PHP2.4s
 



5. No Test. Из разряда глупых =) Просто ничего не делаем.

PHP: test.php:
#!/usr/bin/php
<?php

?>


PYTHON: test.py:
#!/usr/bin/python


PERL: test.pl:
#!/usr/bin/perl


JAVA: test.java:
public class test
{
public static void main(String[] args)
{

}
}


C++: test.cpp:
int main(int argc, char *argv[])
{

}


РЕЗУЛЬТАТЫ ПЯТОГО ТЕСТА (No)
( все знают почему тут ява обосралась =) ляляля.. =) )
C++0.003s
 
Perl0.004s
 
Python0.017s
 
PHP0.052s
 
Java0.153s
 



6. Speed Test. Скорость итераций.

PHP: test.php:
#!/usr/bin/php
<?php

for ($i = 0; $i < 20000000; $i++)
{

}

?>


PYTHON: test.py:
#!/usr/bin/python
for x in xrange(20000000):
pass


PERL: test.pl:
#!/usr/bin/perl

for $i (0 .. 20000000-1)
{

}


JAVA: test.java:
public class test
{
public static void main(String[] args)
{
for (int i = 0; i < 20000000; i++);
}
}


C++: test.cpp:
int main(int argc, char *argv[])
{
for (int i = 0; i < 20000000; i++);
}


РЕЗУЛЬТАТЫ ШЕСТОГО ТЕСТА (Speed)
C++0.07s
 
Java0.20s
 
Perl2.91s
 
PHP3.18s
 
Python3.64s
 





фух. Ну вот. И что мы имеем? Наишустрейший, конечно - си. Однако надо помнить что debug c++ может превратится в nightmare :)). Плюс переносимость нулевая.. нужен собственный экспириенс =)). Ява неожиданно хороша. Половина программ на яве тормозит так лишь из-за заслуг разработчиков.. на самом деле очень шустрый язык... но синтаксис.. мама, роди меня обратно. Ненавижу писать на яве =)). Посему - в мусорку.

Такс.. питон и пхп. В целом - питон чуть медленнее практически во всех тестах. (2 года назад питон проигрывал в скорости почти двухкратно). Но за удобство, за легкую отладку.. в общем я отдаю пальму первенства среди высокоуровневых языков питону =). Если среди web-приложений нужно ещё хорошенько подумать на питоне или на пхп писать, то среди GUI, если писать на высокоуровневом языке - питон =). Да и плюс посмотрите, как легко, непринуждённо и красиво все задачи решаются на питоне =) Уникальный синтаксис! Удачи, коллеги =)).

О перле ничего не скажу - он тут только для разнообразия. Писать на нём сейчас - зачем?

p.s. вообще-то я думал что питон гораздо медленнее чем оказалось. И думал что перл быстрее =).

p.p.s да, кстати, чего юзалось:
java: sun-jdk-1.5.0_07
c++: gcc-4.1.1
php: php-5.1.4
python: python-2.4.3
perl: perl-5.8.8
Linux version 2.6.16-026test014-MockSoul-OVZ (gcc version 4.1.1 (Gentoo 4.1.1)) #16 Sat Jul 8 15:09:49 MSD 2006
машинка: AMD Athlon64 (dual core, 2.6ghz each), 1.5GB DDR, впрочем это не так важно =).



added

Да, вот ещё небольшое ИМХО:
LanguagePHPPerlPythonJavaC++
Скорость написания программ525+13
Отладка44542
Библиотеки44+5 (3rd party)55 (3rd party)
Скорость34255+
Итого, средний балл43.54.253.753.75

Эт ни о чем практически не говорит.. PHP кроме как для веб-программирования вообще непонятно где можно использовать. Хоть и есть CLI, но фу... мой выбор - вообще Python + CPython + (иногда) JPython =). Для С++ чтобы написать кроссплатформенное приложение, нужно поплясать с mingw и иже с ним. Возни все равно много =).

Latest Month

March 2008
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by Lilia Ahner