Здравствуйте, Бывалый, Вы писали:
Б>Пруфы ваши, пожалуйста, на сравнение производительности именно на эти накладные расходы.
The equivalent program in F# is not only shorter but also 17× faster:
...
Specifically, Java takes 6.967s initially and 5.733s steady state whereas F# takes only 0.414s.
Здравствуйте, Бывалый, Вы писали:
Б>Не увидел по ссылке си шарпа.
Так мы обсуждаем проблемы, не языка, а рантайма. Что c#, что f# генерят примерно одинаковый il-код, используют одни и те же типы — с чего им отличаться?
Ок, если просите — вариант на c# у меня выдаёт примерно 0.20 сек (скорее всего, дело в разнице между процессорами). Код (копипаста варианта на яве, просто поменял типы):
public static void Main(String[] args)
{
int n = 10000000;
for (int j = 0; j < 10; ++j)
{
var sw = Stopwatch.StartNew();
var hashtable = new Dictionary<int, double>(n);
for (int i = 1; i <= n; ++i)
{
hashtable.Add(i, 1.0f / i);
}
Console.WriteLine("m[100] = " + hashtable[100]);
Console.WriteLine("Took: {0}", sw.Elapsed);
}
}
Здравствуйте, Бывалый, Вы писали:
Б>Здравствуйте, Sinix, Вы писали:
Б>А жабный у вас сколько выполняется? Ключи сервер ставили? Прогревали жвм? Это же всем давно известные факты.
Нет и не собираюсь
Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
Здравствуйте, Бывалый, Вы писали:
Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.
Вот тут пруф тоже бы не помешал.
Насколько я помню там речь шла не о переходе с дотнета на джаву, а о переходе с Windows на что-то юниксовое.
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
Если ты про лямбды и прочее, то всем пофигу. У жабы совершенно с другой области преимущества, а всякий синтаксический сахар — это мелочи: есть — хорошо, нету — ну да и хрен с ним. Все равно ИДЕ все геренит автоматически. А те, кто очень уж хочет всяких наворотов, берет скалу, и пишет на ней, благо, она полностью совместима с джавой, и они вполне уживаются в одном проекте.
Кстати, вещи вроде экстеншн методов вообще выглядят как костыль.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
А>>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе. IO>Да, только кривое какое-то. А>>Осталось только что-то типа линка добавить и все — жаба торт. IO>Тортом сама жаба не будет уже никогда. Но этого и не нужно.
На самом деле, простота языка — это тоже элемент "тортовости". Просто с другой стороны.
IO>На жаба-платформе есть нормальные языки на любой вкус. IO>Появление 8-й версии на это не повлияет никак.
Именно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Sinix, Вы писали:
S>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
Б>Только почему-то джава используется в low latency системах(финансы, к примеру)
low latency такой разный бывает, что лучше не поминать его всуе. Мы писали замену одной C++ системы на альфе-бете Nemerle (.NET). Полная иммутабельность входных данных, предварительное выделение памяти для выходных, и получаешь предсказуемо большую скорость на критических участках. И знаем что есть полный аналог от других людей на Haskel+C. Абсолютно тоже самое и в Java. Вот разбери к примеру disruptor — тоже один из компонентов финансовой системы. Там все те же ухищрения, от которых любой язык в C превращается. Деления сдвигом, память всю сразу выделяют, обрабатывают строго по месту, без копирований. При таком терминальном использовании язык совершенно вторичен.
Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.
Там просто тех директор сменился, и как раз удачно пришла пора заменить серваки. Как думаешь сколько можно попилить освоить на тупой модернизации, и сколько на переезде на новую платформу? Поиском посмотри, здесь уже раз 10 этот эпический переход обсуждали.
Здравствуйте, QrystaL, Вы писали:
QL>Здравствуйте, Аноним, Вы писали: А>>так чего бояться то?
QL>Что однажды проснетесь QL>А вокруг мир иной...
QL>Ну вы поняли
Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, romangr, Вы писали:
S>>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
R>Справедливости ради надо отметить, например, наличие Escape-Analysis в JVM, чего в CLR нет пока.
В примере со словарем он не поможет. С другой стороны наличие value-типов делает его ненужным в некоторых случаях.
Впрочем это всё схоластика. Количественных данных о влиянии эскейп-анализа (и value-типов) на производительность нет.
Разве что в каких-то микробенчмарках.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, Eugeny__, Вы писали: E__>Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.
Я вообще-то другое имел в виду...
Если автора так беспокоит, кто на первом месте, значит есть сомнения в выбранном направлении. Иначе он не создавал бы провокационно-холиварные темы )
Здравствуйте, quwy, Вы писали:
А>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. Q>Enumerations сделали уже?
У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Здравствуйте, ins-omnia, Вы писали:
IO>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.
.NET/struct
1352 : 12522034.8692291
.NET/class
4521 : 12522034.8692291
Java
41119 : 1.2522034869229091E7
Java
public class V3 {
public float X;
public float Y;
public float Z;
public V3(float x, float y, float z) {
X = x; Y = y; Z = z;
}
}
public class Test {
public static void main(String[] args) {
Random rand = new Random(0);
long s = System.nanoTime();
V3[] mesh = new V3[1 << 24];
for (int i = 0; i != mesh.length; ++i)
mesh[i] = MakeRandVector(rand);
V3 dir = MakeRandVector(rand);
double sum = 0.0;
for (int i = 0; i != mesh.length; ++i)
sum += mesh[i].X * dir.X + mesh[i].Y * dir.Y + mesh[i].Z * dir.Z;
long f = System.nanoTime();
long milliseconds = (f - s) / 1000000;
System.out.println(milliseconds + " : " + sum);
}
private static V3 MakeRandVector(Random rand) {
return new V3(rand.nextFloat(), rand.nextFloat(), rand.nextFloat());
}
}
.NET
[ Record ]
public struct V3
{
public X : float;
public Y : float;
public Z : float;
}
def rand = JavaRandom(0);
def MakeRandVector()
{
V3(rand.NextFloat(), rand.NextFloat(), rand.NextFloat())
}
def stopwatch = Stopwatch.StartNew();
def mesh = array(1 << 24);
for (mutable i = 0; i != mesh.Length; ++i)
mesh[i] = MakeRandVector();
def dir = MakeRandVector();
mutable sum = 0.0;
for (mutable i = 0; i != mesh.Length; ++i)
sum += mesh[i].X * dir.X + mesh[i].Y * dir.Y + mesh[i].Z * dir.Z;
stopwatch.Stop();
Console.WriteLine("{0} : {1}", stopwatch.ElapsedMilliseconds, sum);
Здравствуйте, HTML5, Вы писали:
HTM>Здравствуйте, Steamus, Вы писали:
HTM>Несерьезно. Если JavaFX полагается на некую "систему масштабирования" у Осаки, а не растрирует текст самостоятельно, это проблемы JavaFX, а не ее юзеров.
Да причём тут JavaFX? Смешались в кучу кони/люди... Человек что бы сделать снимки экрана с демоприложения, чем-то увеличил изображение. Чем он это делал, я не знаю. Но там какая-то грязь возле символов везде. Точки какие-то сверху... Я же просто "лупой" смотрел на то как шрифт нарисован — так вот нет там никаких случайных точек вокруг. Всё аккуратно. Дефекты, если какие и есть, то они не такого грубого уровня.
Здравствуйте, xRAZORx, Вы писали:
А>>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. Q>>Enumerations сделали уже? RAZ>У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Ага, а еще паттерны наше все.
Отсутствие перечислений -- это не сладости, это убогость.
RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Кто все эти люди?
Здравствуйте, Don Reba, Вы писали:
IO>>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.
DR>
.NET/struct
1352 : 12522034.8692291
.NET/class
4521 : 12522034.8692291
Java
41119 : 1.2522034869229091E7
DR>
1. Это таки микробенчмарк. О производительности в реальных задачах по нему нельзя однозначно судить.
2. Непонятно почему Java настолько медленее в этом примере.
3. В реальной задаче подобного рода массив классов всё равно не будут использовать.
4. Правильным подбором примера можно показать, что Хаскел быстрее C.
В целом Java вероятно хуже в таких низкоуровневых задачах, чем .NET.
Однако в каком-нибудь статистическом рассчете разница будет уже не заметна, я думаю.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, xRAZORx, Вы писали:
RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Студия чем не идея, или студия с решарпером. Какое отношение хадуп,касандра и проч. имеют
к сравнению языков и платформ. Это говорит о том, что на яве разработчиков больше, плюс давняя нелюбовь OSS
сообщества к ms. Так сложилось...