Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

C# vs Java (производительность)

Автор myst, ноября 24, 2010, 19:49

0 Пользователи и 1 гость просматривают эту тему.

Алексей Гринь

Цитата: Dana от ноября 26, 2010, 08:23
Ну и? Из греческого заимствовано существительное «синтаксис».
А «синтаксический» образовано по русским моделям. Cf. фр. syntaxique.
А в принципе в теории было бы нормально и для греч. языка, ибо там в атт. диалекте ti > si (продолжение ПИЕ-шной драмы, как будто). Может, там тоже выравнивание по формам типа -te..., -to... ?

Цитата: myst от ноября 24, 2010, 19:49
Слепил наколенную поделку для подсчёта количества всевозможных трёхсимвольных сочетаний в массиве текста (300 Мб). Код один в один.
java -client  — 1:50
java -server — 1:26
.NET (с оптимизацией) — 2:19
.NET (без оптимизации) — 2:14 :o

Жаба невозбранно порвала дотнетик.
Ну .NET лучше оптимизирован для нормального desktop expierence, поэтому там джиттер послабже будет by design. Поэтому-то мы и не видим жабу на десктопе — ибо слишком много думает.
Но чё-то цифры какие-то подозрительныя. Что такое «с оптимизацией»?
肏! Τίς πέπορδε;

Алексей Гринь

Цитата: myst от ноября 26, 2010, 13:33
gcc 3.4.4 (cygwin, -O2) — 8:51,45 Прервал не дождавшись конца. :o
Чё-то делаешь не так.

Цитата: myst от ноября 24, 2010, 20:12
            if (!pieces.ContainsKey(piece)) pieces.Add(piece, 1);
            else pieces[piece]++;

А что если попробовать как-то так:
int found;
if(!pieces.TryGetValue(piece, out found)) pieces[piece] = 1;
else pieces[piece] = found + 1;
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от ноября 26, 2010, 16:11
Но чё-то цифры какие-то подозрительныя. Что такое «с оптимизацией»?
Цитировать
% csc -\? | grep -i optim
/optimize[+|-]                 Enable optimizations (Short form: /o)

myst

Цитата: Алексей Гринь от ноября 26, 2010, 16:30
Чё-то делаешь не так.
Это не я. Тот же код в VC летает. Там с буферизацией ввода походу фигня какая-то.

Алексей Гринь

Интересно бы ещё через mono 2.8 прогнать (желательно под линюпсем).

Цитата: myst от ноября 26, 2010, 16:40
Там с буферизацией ввода походу фигня какая-то.
Наверное та же фигня у дотнета. Попробуй не перенаправлять ввод и вывод, а указывать данные в args и читать сразу из файла/в файл. Интересно, чё будет.
Но а если поменять код на мой (если он верен, ибо пишу по памяти), то какие цифры будут? Просто интересно.
肏! Τίς πέπορδε;

myst


Алексей Гринь

Цитата: myst от ноября 26, 2010, 16:46
If the specified key is not found, a get operation throws a KeyNotFoundException
Это к чему? TryGetValue не кидают ошибку. Вместо этого он возвращает bool.
肏! Τίς πέπορδε;

myst



Bhudh

Цитата: μύστηςПочти 5 минут ждал.
Поставь на ночь на закачку ;D.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Алексей Гринь

Цитата: myst от ноября 26, 2010, 16:49
ЦитироватьЭто к чему?
Цитата: Алексей Гринь от Сегодня в 17:30
Цитироватьpieces[piece] = 1;
Так это же не get operation, а set operation.
肏! Τίς πέπορδε;


myst


Алексей Гринь

肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от ноября 26, 2010, 16:30
int found;
if(!pieces.TryGetValue(piece, out found)) pieces[piece] = 1;
else pieces[piece] = found + 1;
Кстати, а зачем так? Можно же:

int found;
pieces.TryGetValue(piece, out found);
pieces[piece] = found + 1;

Алексей Гринь

Цитата: myst от ноября 26, 2010, 17:01
Кстати, а зачем так? Можно же:
Код: [Выделить]int found;
pieces.TryGetValue(piece, out found);
pieces[piece] = found + 1;
Можно и так.

Ну дык проигрывает дотнет до сих пор или нет?
肏! Τίς πέπορδε;

myst


myst

Убрал в жабском коде containsKey:

Integer count = pieces.get(piece);
if(count == null) count = 0;
pieces.put(piece, count + 1);

Стало 0:53. Жабка снова впереди. :)


Алексей Гринь

Цитата: myst от ноября 26, 2010, 17:33
стало 0:53. Жабка снова впереди. :)
Для полного счастья надо сравнить потребление памяти.
肏! Τίς πέπορδε;

Алексей Гринь

Чё-то короче не так тут. Ибо в жабовской версии идёт тормозной боксинг по несколько раз. Или неужели в дотнете словарь такой тормозной.

Короче, в производительность входит также и потребление памяти. А вот тут прозреваю содомию :\
肏! Τίς πέπορδε;

myst

У серверной машины максимум где-то в районе 190 мегов. У клиентской — 35, но она работает полторы минуты.
У дотнетовой программы — 13,5.

В производительность входит количество работы в единицу времени. :)

.NET'овые программы нельзя никак потюнить, чтобы они, когда надо, память не экономили и выдавали максимальную скорость? Жабомашину можно настраивать по-всякому, и это плюс.

Алексей Гринь

Цитата: myst от ноября 27, 2010, 08:51
.NET'овые программы нельзя никак потюнить, чтобы они, когда надо, память не экономили и выдавали максимальную скорость?
Да там есть конфигурационные файлы какие-то, не разбирался.

Цитата: myst от ноября 27, 2010, 08:51
У серверной машины максимум где-то в районе 190 мегов. У клиентской — 35, но она работает полторы минуты.
У дотнетовой программы — 13,5.

В производительность входит количество работы в единицу времени.
Ну вот. Дотнет медленнее в два раза серверной версии, зато потребляет ресурсов меньше в 14 раз. Поэтому он выигрывает.
肏! Τίς πέπορδε;

myst

С hash_map C++ — 1:10. Максимальное потребление памяти ок. 9 мегабайт.

myst

Цитата: Алексей Гринь от ноября 27, 2010, 09:43
Дотнет медленнее в два раза серверной версии, зато потребляет ресурсов меньше в 14 раз.
Дык, не в два: 0:53 vs 1:09

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр