LINUX.ORG.RU
ФорумTalks

Братцы! А я Java то оказывается тормоз! :0


0

0

Решил проверить производительность популярных виртуальных машин. Тестировал Microsoft .Net, Mono и Java. Дал им банальнейшую задачу, в которой написал как можно более низкоуровневый код, дабы измерить чистую убыль производительности. Программа сто миллионов раз резервирует память для матрицы 3x3, заполняет ее случайными числами и считает определитель. Вот код на Java (на C# почти тоже самое):

import java.util.Random;

class test
{
public static void main(String [] args)
{
int a[][];
int k,m,j,det;
Random random = new Random();
for(j = 0; j<100000000; j++)
{
a = new int[3][3];
for(k=0; k<3; k++) for(m=0; m<3; m++) {a[k][m] = random.nextInt();}
det = a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[2][0]+a[0][2]*a[1][0]*a[2][1]*-
a[0][2]*a[1][1]*a[2][0]-a[0][1]*a[1][0]*a[2][2]-a[0][0]*a[1][2]*a[2][1];
}
}
}

Аналогичный код на СИ (выполнялся минуту):

#include <stdlib.h>

int main()
{
int* a;
int k,m,j,det;
for(j = 0; j<100000000; j++)
{
a = (int*) malloc(9*sizeof(int));
for(k=0; k<3; k++) for(m=0; m<3; m++) {*(a+3*k+m) = rand();}
det = (*(a+3*0+0))*(*(a+3*1+1))*(*(a+3*2+2))+(*(a+3*0+1))*(*(a+3*1+2))*(*(a+3*2+0))+(* (a+3*0+2))*(*(a+3*1+0))*(*(a+3*2+1))*-
(*(a+3*0+2))*(*(a+3*1+1))*(*(a+3*2+0))-(*(a+0+3*1))*(*(a+3*1+0))*(*(a+3*2+2))-(* (a+3*0+0))*(*(a+3*1+2))*(*(a+3*2+1));
free(a);
}
return 0;
}

(просьба не бить меня за то, как я работаю с двумерными массивами на Си ;) )

Результаты печальны: первое место.... Microsoft! Всего в полтора раза медленне Си (одна минута, тридцать секунд). Далее жаба - две минуты. И инвалид Mono - 2 мин 45 с. Запуск Явы в с ключем -server не помог. Не хорошо как-то. Может это просто MS жульничает? Все-таки тесная интеграция с ОС... Незнаю... :( Попробуйте кто-нибудь у себя, мож другие цифры будут.

★★
Ответ на: комментарий от svu

>Да, и делать new/malloc в таком цикле - это сразу убивать всю статистику. Вы фактически тестируете работу garbage collector в жабе. Создайте массив снаружи цикла.

Все. Вынес все операции с памятью из циклов. ИТОГ:

1) Си - 35с 2) .Net = Java = 44 c 3) Mono - 1 мин 54 с

Заметьте, теперь жаба с MS.Net сравнялись. У .Net лучше garbage collector?

xTERM ★★
() автор топика
Ответ на: комментарий от xTERM

>У .Net лучше garbage collector?

А чего ты ожидал? .NET работает на одной платформе, джава на многих. Уж одну-то платформу оптимизировать кардинально проще.

signal
()
Ответ на: комментарий от xTERM

Это уже ближе к телу.

Хотя правильно тут выше сказали - сугубо искусственный тест, не дающий никакого представления о реальных задачах.

svu ★★★★★
()
Ответ на: комментарий от xTERM

> Заметьте, теперь жаба с MS.Net сравнялись. У .Net лучше garbage collector?

Неа, просто жаба и все остальные сосут, а Си - рулит. Очевидно, пора сие делать аксиомой и заносить в ЛОР-фак.

Gharik
()
Ответ на: комментарий от Gharik

> Неа, просто жаба и все остальные сосут, а Си - рулит

Пляшем-камлаем, функциональщиков вызываем?

svu ★★★★★
()
Ответ на: комментарий от svu

> Пляшем-камлаем, функциональщиков вызываем?

/me бьет себя по голове "как мы могли забыть ...."

ЛИИИИИИСПЕЕЕЕЕРЫЫЫЫЫ

iBliss
()
Ответ на: комментарий от Skeptik

>Исходники .net содраны с исходников жабы (благо у MS они давно есть)?

.net (как платформа) мало похожа на жабу. с# похож синтаксисом языка да garbage-коллектором.

signal
()
Ответ на: комментарий от svu

А чего нас вызывать, мы и так знаем, что tagged unions эффективнее всего прочего, вместе взятого, так что меряться эффективностью memory management с маленькими и слабыми (java, .net) мы не станем, это не спортивно.

anonymous
()
Ответ на: комментарий от Gharik

> Рубим и жжём, лисперов ждём ;)

Гарик, ты не внимательно читаешь комменты. В последнем мини-флейме про Лисп было показано, что он не является функциональным языком, а есть императивный. Поэтому лисперы не придут :)

Cris
()
Ответ на: комментарий от Cris

> Гарик, ты не внимательно читаешь комменты. В последнем мини-флейме про Лисп было показано, что он не является функциональным языком, а есть императивный. Поэтому лисперы не придут :)

Ну так чего теперь, опять нажраться и в бордель "Девочки фюрера" пойти с горя?

Gharik
()
Ответ на: комментарий от iBliss

>Это заведение существует ? Это то о чем я думаю ?

Нет,это всего лишь название одной порнушки 80х. И это не то о чем ты сейчас думаешь )

signal
()
Ответ на: комментарий от signal

> И это не то о чем ты сейчас думаешь )

Блин а я уж думал реально погудеть где нить в антураже Мэрлиновского m'obscene... Но вот вставляют меня девки в кителях на босу ногу...

iBliss
()
Ответ на: комментарий от iBliss

>Блин а я уж думал реально погудеть где нить в антураже Мэрлиновского m'obscene... Но вот вставляют меня девки в кителях на босу ногу...

Дык вызови да китель из военного музея на каждую натяни. Щас же за деньги даже в мавзолее с ильичом загудеть можно.Причем он еще и тосты поднимать будет )

signal
()
Ответ на: комментарий от iBliss

> Это заведение существует ? Это то о чем я думаю ?

Реальная контора, располагается то ли в Буэнос-Айресе, то ли в Рио (зело много мы тогда объездили за какие-то пару месяцев). А совпадение с фильмецом, что товарищ выше помянул - только в тему.

Gharik
()
Ответ на: комментарий от Gharik

> то ли в Рио

Я знал что О.Бендер что-то недоговаривал, а то все негры... в белых штанах...

iBliss
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.