Re[7]: C#5 и Java 8
От: Sinix  
Дата: 10.10.12 12:09
Оценка:
Здравствуйте, Бывалый, Вы писали:

Б>Пруфы ваши, пожалуйста, на сравнение производительности именно на эти накладные расходы.


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.

17x устроит?

Конечно, это крайний случай, но вы ведь сами просили "покажите мне эти ваши расходы!"
Re[8]: C#5 и Java 8
От: Бывалый  
Дата: 10.10.12 12:12
Оценка: -1
Здравствуйте, Sinix, Вы писали:

S>Конечно, это крайний случай, но вы ведь сами просили "покажите мне эти ваши расходы!"


Не увидел по ссылке си шарпа.
Re[9]: C#5 и Java 8
От: Sinix  
Дата: 10.10.12 12:26
Оценка:
Здравствуйте, Бывалый, Вы писали:

Б>Не увидел по ссылке си шарпа.

Так мы обсуждаем проблемы, не языка, а рантайма. Что 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);
                }
            }
Re[10]: C#5 и Java 8
От: Бывалый  
Дата: 10.10.12 12:31
Оценка:
Здравствуйте, Sinix, Вы писали:

А жабный у вас сколько выполняется? Ключи сервер ставили? Прогревали жвм? Это же всем давно известные факты.
Re[11]: C#5 и Java 8
От: Sinix  
Дата: 10.10.12 12:37
Оценка:
Здравствуйте, Бывалый, Вы писали:

Б>Здравствуйте, Sinix, Вы писали:


Б>А жабный у вас сколько выполняется? Ключи сервер ставили? Прогревали жвм? Это же всем давно известные факты.

Нет и не собираюсь

Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
Re[7]: C#5 и Java 8
От: syrompe  
Дата: 10.10.12 12:56
Оценка:
Здравствуйте, Бывалый, Вы писали:

Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.


Вот тут пруф тоже бы не помешал.
Насколько я помню там речь шла не о переходе с дотнета на джаву, а о переходе с Windows на что-то юниксовое.
Re: C#5 и Java 8
От: Eugeny__ Украина  
Дата: 10.10.12 12:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.


Если ты про лямбды и прочее, то всем пофигу. У жабы совершенно с другой области преимущества, а всякий синтаксический сахар — это мелочи: есть — хорошо, нету — ну да и хрен с ним. Все равно ИДЕ все геренит автоматически. А те, кто очень уж хочет всяких наворотов, берет скалу, и пишет на ней, благо, она полностью совместима с джавой, и они вполне уживаются в одном проекте.

Кстати, вещи вроде экстеншн методов вообще выглядят как костыль.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[4]: C#5 и Java 8
От: Eugeny__ Украина  
Дата: 10.10.12 13:00
Оценка:
Здравствуйте, ins-omnia, Вы писали:


А>>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе.

IO>Да, только кривое какое-то.
А>>Осталось только что-то типа линка добавить и все — жаба торт.
IO>Тортом сама жаба не будет уже никогда. Но этого и не нужно.

На самом деле, простота языка — это тоже элемент "тортовости". Просто с другой стороны.

IO>На жаба-платформе есть нормальные языки на любой вкус.

IO>Появление 8-й версии на это не повлияет никак.

Именно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[12]: C#5 и Java 8
От: romangr Россия  
Дата: 10.10.12 13:00
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?


Справедливости ради надо отметить, например, наличие Escape-Analysis в JVM, чего в CLR нет пока.
http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 67>>
Re[7]: C#5 и Java 8
От: hi_octane Беларусь  
Дата: 10.10.12 13:01
Оценка: +3
Б>Только почему-то джава используется в low latency системах(финансы, к примеру)

low latency такой разный бывает, что лучше не поминать его всуе. Мы писали замену одной C++ системы на альфе-бете Nemerle (.NET). Полная иммутабельность входных данных, предварительное выделение памяти для выходных, и получаешь предсказуемо большую скорость на критических участках. И знаем что есть полный аналог от других людей на Haskel+C. Абсолютно тоже самое и в Java. Вот разбери к примеру disruptor — тоже один из компонентов финансовой системы. Там все те же ухищрения, от которых любой язык в C превращается. Деления сдвигом, память всю сразу выделяют, обрабатывают строго по месту, без копирований. При таком терминальном использовании язык совершенно вторичен.

Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.


Там просто тех директор сменился, и как раз удачно пришла пора заменить серваки. Как думаешь сколько можно попилить освоить на тупой модернизации, и сколько на переезде на новую платформу? Поиском посмотри, здесь уже раз 10 этот эпический переход обсуждали.
Re[4]: C#5 и Java 8
От: Eugeny__ Украина  
Дата: 10.10.12 13:04
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, Аноним, Вы писали:

А>>так чего бояться то?

QL>Что однажды проснетесь

QL>А вокруг мир иной...

QL>Ну вы поняли


Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[13]: C#5 и Java 8
От: ins-omnia СССР  
Дата: 10.10.12 13:16
Оценка:
Здравствуйте, romangr, Вы писали:

S>>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?


R>Справедливости ради надо отметить, например, наличие Escape-Analysis в JVM, чего в CLR нет пока.


В примере со словарем он не поможет. С другой стороны наличие value-типов делает его ненужным в некоторых случаях.
Впрочем это всё схоластика. Количественных данных о влиянии эскейп-анализа (и value-типов) на производительность нет.
Разве что в каких-то микробенчмарках.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Re[5]: C#5 и Java 8
От: QrystaL Украина  
Дата: 10.10.12 13:17
Оценка:
Здравствуйте, Eugeny__, Вы писали:
E__>Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.

Я вообще-то другое имел в виду...
Если автора так беспокоит, кто на первом месте, значит есть сомнения в выбранном направлении. Иначе он не создавал бы провокационно-холиварные темы )
Re: C#5 и Java 8
От: quwy  
Дата: 10.10.12 13:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.

Enumerations сделали уже?
Re[2]: C#5 и Java 8
От: xRAZORx  
Дата: 10.10.12 13:56
Оценка:
Здравствуйте, quwy, Вы писали:

А>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.

Q>Enumerations сделали уже?

У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Re[7]: C#5 и Java 8
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 10.10.12 13:58
Оценка: 2 (1)
Здравствуйте, ins-omnia, Вы писали:

IO>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.


.NET/struct1352 : 12522034.8692291
.NET/class4521 : 12522034.8692291
Java41119 : 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);
Ce n'est que pour vous dire ce que je vous dis.
Re[10]: C#5 и Java 8
От: Steamus Беларусь  
Дата: 10.10.12 14:14
Оценка:
Здравствуйте, HTML5, Вы писали:

HTM>Здравствуйте, Steamus, Вы писали:


HTM>Несерьезно. Если JavaFX полагается на некую "систему масштабирования" у Осаки, а не растрирует текст самостоятельно, это проблемы JavaFX, а не ее юзеров.


Да причём тут JavaFX? Смешались в кучу кони/люди... Человек что бы сделать снимки экрана с демоприложения, чем-то увеличил изображение. Чем он это делал, я не знаю. Но там какая-то грязь возле символов везде. Точки какие-то сверху... Я же просто "лупой" смотрел на то как шрифт нарисован — так вот нет там никаких случайных точек вокруг. Всё аккуратно. Дефекты, если какие и есть, то они не такого грубого уровня.
Re[3]: C#5 и Java 8
От: quwy  
Дата: 10.10.12 14:21
Оценка:
Здравствуйте, xRAZORx, Вы писали:

А>>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.

Q>>Enumerations сделали уже?
RAZ>У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Ага, а еще паттерны наше все.
Отсутствие перечислений -- это не сладости, это убогость.

RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).

Кто все эти люди?
Re[8]: C#5 и Java 8
От: ins-omnia СССР  
Дата: 10.10.12 14:23
Оценка:
Здравствуйте, Don Reba, Вы писали:

IO>>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.


DR>

.NET/struct1352 : 12522034.8692291
.NET/class4521 : 12522034.8692291
Java41119 : 1.2522034869229091E7
DR>

1. Это таки микробенчмарк. О производительности в реальных задачах по нему нельзя однозначно судить.
2. Непонятно почему Java настолько медленее в этом примере.
3. В реальной задаче подобного рода массив классов всё равно не будут использовать.
4. Правильным подбором примера можно показать, что Хаскел быстрее C.

В целом Java вероятно хуже в таких низкоуровневых задачах, чем .NET.
Однако в каком-нибудь статистическом рассчете разница будет уже не заметна, я думаю.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Re[3]: C#5 и Java 8
От: Sharov Россия  
Дата: 10.10.12 14:38
Оценка:
Здравствуйте, xRAZORx, Вы писали:

RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).


Студия чем не идея, или студия с решарпером. Какое отношение хадуп,касандра и проч. имеют
к сравнению языков и платформ. Это говорит о том, что на яве разработчиков больше, плюс давняя нелюбовь OSS
сообщества к ms. Так сложилось...
Кодом людям нужно помогать!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.