Начну с предистории. В школе я изучал basic. Респект ms dos!
В институте я изучал pascal. О нем остались отличные впечатления. Самый маленький и при этом самодостаточный exe-файл на выходе. На первой работе написал на turbo-pascal программу разбивки уведомлений по адресам.
До сих пор вспоминаю и не могу понять как мне это удалось ведь я у меня было тогда мало компьютерной практики(2001 - компьютеры еще большая редкость).
Потом были foxpro и visual basic. C++ я так и не понял(зачем он нам - простым смертным?). Потом я наткнулся на стопку журналов RSDN - это судьба. Я узнал, что есть новый язык C#. Я стал кодить, по-маленьку набираясь опыта. К текущему моменту написал несколько функционирующих до сих пор программ и asp.net сайтов. Но меня все равно тяготила привязка к Windows. Кодируя на C# я так или иначе думал о системе будь то работа с excel или файлами.
Году в 2009-2010 я узнал что jdk (java) оказывается бесплатна(когда-то давно я прочитал что компилятор платный). С этого момента началось мое путешествие в волшебную страну OpenSource. Я написал два web-приложения: один на чистой java, второй на groovy - скриптовый язык работающий на java и полностью с ним совместиный. Обе проги работают уже пару лет и не требует вмешательства. Единственная проблема сервера java-приложений очень любит память. Я забыл о windows и стал все чаще загружать запрещенную GNU Linux.
Но мне не давали покоя GUI. Легкость с которой я лепил приложения на C# при помощи библиотеки WinForms убивала меня. Гемороидальный netbeans и еще более тормозной eclipse. Хотя я видел достаточно сложные GUI написаные на чистой java.
Вообщем, я потерял покой и стал метаться. Так я увидел D - гениальный нативный(т.е. генерирующий машинный код), быстрый как си и простой как сишарп.
Но к сожалению, количество и качество библиотек не позволило мне создать ни чего нормального. Были еще какие-то попытки, можно конечно кодить под питон и т.п. Но это же идиотизм, согласитесь?
А теперь о сути, код:
java:
public class starter {
public static void main(String[] args) {
for(int i=0;i<100000;i++)
new starter();
}
}
c#:
using System;
public class app {
public static void Main(String[] args){
for(int i=0;i<100000;i++)
new app();
}
}
тест:
@nemo ~]$ time java starter
real 0m0.309s
user 0m0.170s
sys 0m0.070s
@nemo ~]$ time mono cs.exe
real 0m0.059s
user 0m0.037s
sys 0m0.007s
@nemo ~]$ python
Python 3.2.3 (default, Apr 23 2012, 23:35:30)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 309/59
5.237288135593221
>>> 170/37
4.594594594594595
>>> 70/7
10.0
>>>
Абсолютно одинаковый код создания кучси объектов:
разница как видите убийственная(и это GNU Linux). Суть теста в том, что
оба языка ООП, а следовательно ява будет тормозить безбожно, потому
практически все в java это объект и объекты состоят тоже из объектов.
Да у java пока есть одно приемущество как инструмент Opensource он долго развивался и сейчас накоплено огромное количество Public библиотек. Однако
C# развивается гораздо динамичней и его виртуальная машина в десять раз быстрей! Я жуе вижу такие продакшн проекты как Nhibernate(данные) Npoi(генерация отчетов), GTKSharp(кросплатформенные GUI), Asp.Net MVC - отличная
библиотека для создания качественного web-приложения.
На мой взгляд у C# большое будущее. Призываю разработчиков писать GPL
под c# и тогда все будет круто! Сегодня за полдня с использованием Monodevelop написал GUI на c#(бд - sqlite,доступ к данным nhibernate,GUI - GTK 2.12)
Долой предрассудки - java на свалку!
В институте я изучал pascal. О нем остались отличные впечатления. Самый маленький и при этом самодостаточный exe-файл на выходе. На первой работе написал на turbo-pascal программу разбивки уведомлений по адресам.
До сих пор вспоминаю и не могу понять как мне это удалось ведь я у меня было тогда мало компьютерной практики(2001 - компьютеры еще большая редкость).
Потом были foxpro и visual basic. C++ я так и не понял(зачем он нам - простым смертным?). Потом я наткнулся на стопку журналов RSDN - это судьба. Я узнал, что есть новый язык C#. Я стал кодить, по-маленьку набираясь опыта. К текущему моменту написал несколько функционирующих до сих пор программ и asp.net сайтов. Но меня все равно тяготила привязка к Windows. Кодируя на C# я так или иначе думал о системе будь то работа с excel или файлами.
Году в 2009-2010 я узнал что jdk (java) оказывается бесплатна(когда-то давно я прочитал что компилятор платный). С этого момента началось мое путешествие в волшебную страну OpenSource. Я написал два web-приложения: один на чистой java, второй на groovy - скриптовый язык работающий на java и полностью с ним совместиный. Обе проги работают уже пару лет и не требует вмешательства. Единственная проблема сервера java-приложений очень любит память. Я забыл о windows и стал все чаще загружать запрещенную GNU Linux.
Но мне не давали покоя GUI. Легкость с которой я лепил приложения на C# при помощи библиотеки WinForms убивала меня. Гемороидальный netbeans и еще более тормозной eclipse. Хотя я видел достаточно сложные GUI написаные на чистой java.
Вообщем, я потерял покой и стал метаться. Так я увидел D - гениальный нативный(т.е. генерирующий машинный код), быстрый как си и простой как сишарп.
Но к сожалению, количество и качество библиотек не позволило мне создать ни чего нормального. Были еще какие-то попытки, можно конечно кодить под питон и т.п. Но это же идиотизм, согласитесь?
А теперь о сути, код:
java:
public class starter {
public static void main(String[] args) {
for(int i=0;i<100000;i++)
new starter();
}
}
c#:
using System;
public class app {
public static void Main(String[] args){
for(int i=0;i<100000;i++)
new app();
}
}
тест:
@nemo ~]$ time java starter
real 0m0.309s
user 0m0.170s
sys 0m0.070s
@nemo ~]$ time mono cs.exe
real 0m0.059s
user 0m0.037s
sys 0m0.007s
@nemo ~]$ python
Python 3.2.3 (default, Apr 23 2012, 23:35:30)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 309/59
5.237288135593221
>>> 170/37
4.594594594594595
>>> 70/7
10.0
>>>
Абсолютно одинаковый код создания кучси объектов:
разница как видите убийственная(и это GNU Linux). Суть теста в том, что
оба языка ООП, а следовательно ява будет тормозить безбожно, потому
практически все в java это объект и объекты состоят тоже из объектов.
Да у java пока есть одно приемущество как инструмент Opensource он долго развивался и сейчас накоплено огромное количество Public библиотек. Однако
C# развивается гораздо динамичней и его виртуальная машина в десять раз быстрей! Я жуе вижу такие продакшн проекты как Nhibernate(данные) Npoi(генерация отчетов), GTKSharp(кросплатформенные GUI), Asp.Net MVC - отличная
библиотека для создания качественного web-приложения.
На мой взгляд у C# большое будущее. Призываю разработчиков писать GPL
под c# и тогда все будет круто! Сегодня за полдня с использованием Monodevelop написал GUI на c#(бд - sqlite,доступ к данным nhibernate,GUI - GTK 2.12)
Долой предрассудки - java на свалку!

продолжил исследования на работе, вот такой код
ОтветитьУдалитьimport java.util.*;
public class starter {
public static void main(String[] args) {
long time = System.currentTimeMillis();
starter o1= new starter();
for(int i=0;i<1000000;i++) {
o1.add(new starter());
}
System.out.println((System.currentTimeMillis()-time));
}
private List list=new ArrayList();
public void add(starter child) { list.add(child);}
}
Отстает от шарпа в два раза. однако если заполнять простой
массив то джава вырывается вперед:
public class starter {
public static void main(String[] args) {
long time = System.currentTimeMillis();
Object[] x=new Object[10000000];
for(int i=0;i<10000000;i++){
x[i]=new starter();
}
System.out.println((System.currentTimeMillis()-time));
}
}
Правда, надо сказать, что джава упала после того как я задал в первом тесте List на 10 милионов с нехваткой памяти.
Я в смятении! кто мне скажет почему GUI на джава так тормозит?