Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

Java vs Delphi   Найти похожие ветки 

 
StarCon   (2004-06-29 10:38) [0]

Нами были проведены тесты быстродействия языков Delphi и Java на математических операциях *,/,+,- плавающей арифметики. Для делфи был использован код:

var
 t:cardinal;
 i:integer;
 v,v1,v2,v3,v4,v5,v6:double;
begin
 v:=2.674374;
 v1:=0.6748345;
 v2:=9.43924347;
 v3:=67.26357244;
 v4:=4.82736832;
 v5:=0.78473924839;
 v6:=2.94739473982;

 t:=GetTickCount();

 for i:=0 to 100000000 do
 begin
   v:=v1*v2+v3/v4-v;
 end;

 Edit1.Text:=IntToStr((GetTickCount()-t));

Для Java:

public final int max_count = 100000000;

   public Java_Test() {
       test();
   }

   public void test() {

       double v = 2.674374;
       double v1 = 0.6748345;
       double v2 = 9.43924347;
       double v3 = 67.26357244;
       double v4 = 4.82736832;
       double v5 = 0.78473924839;
       double v6 = 2.94739473982;

       long bt = System.currentTimeMillis();

       for (int i = 0; i < max_count; i++) {
           v = v1 * v2 + v3 / v4 - v;
       }

       long et = System.currentTimeMillis();

       long time = et - bt;

       System.out.println("Time: " + Long.toString(time) + ";");

   }

Испытания проводились на одной и той же машине.

Были получены следующие результаты в милисекундах в серии из пяти испытаний:

Delphi:  2584.2 мс.
Java:     2353.2 мс.

Т.е. java оказалась быстрее delphi на 231 мс. или на 8.94%!

Кто теперь скажет что java медленнее delphi?


 
Иванов Александр   (2004-06-29 11:07) [1]

Эксперимент не совсем "чистый" для Java вы сделали консольное приложение, а для Delphi - нет. Так что прибавьте время на перерисовку. Или повторите эксперимент.


 
StarCon   (2004-06-29 11:13) [2]

сделал консольное:
var
 t:integer;
 i:integer;
 v,v1,v2,v3,v4,v5,v6:double;
begin
 {$APPTYPE CONSOLE}

 v:=2.674374;
 v1:=0.6748345;
 v2:=9.43924347;
 v3:=67.26357244;
 v4:=4.82736832;
 v5:=0.78473924839;
 v6:=2.94739473982;

 t:=GetTickCount();

 for i:=0 to 100000000 do
 begin
   v:=v1*v2+v3/v4-v;
 end;
 WriteLn(IntToStr((GetTickCount()-t)));
end.

как ни странно, но время стало еще больше на 16 мс.
есть еще какие предположения почему так происходит?


 
TUser ©   (2004-06-29 11:26) [3]

Жаву не знаю, но первый вопрос - а тип double там точно соответствует double в delphi. Что касается скорости - верю в то, что интерпретируемое приложение (все-таки ведь интерпретируемое, как его ни называй) не может быть быстрее скомпилированного.


 
wicked ©   (2004-06-29 11:29) [4]

хы-хы... код не эквивалентный - на паскале он будет исполняться на одну итерацию больше... :)
хотя, судя по такой оплошности, вызывает сомнения сам тест - например, совсем неизвестно, с какими настройками скомпилированы оба приложения...


 
Sandman25 ©   (2004-06-29 11:29) [5]

uses покажите


 
Иванов Александр   (2004-06-29 11:38) [6]

Примитивные типы в Java - тоже платформенно независимые, хотя это не причина работать быстрее :).


 
StarCon   (2004-06-29 11:41) [7]

uses   SysUtils, Windows, Unit1 in "Unit1.pas" {Form1};


 
StarCon   (2004-06-29 11:42) [8]

wicked - может подскажешь, какие настройки для дельфи поставить, чтобы было быстрее?


 
pasha_golub ©   (2004-06-29 11:43) [9]

Это не тест, а черт знает что. :-)


 
Anatoly Podgoretsky ©   (2004-06-29 11:44) [10]

Отключить все проверки и FPU коррекцию ошибки.


 
Dmitriy O. ©   (2004-06-29 11:45) [11]

Тут тоже ктот не давно тесте проводил по скорости в моей ветке
"Где найти компилятор Java и как он называется" Там Java со строками тоже быстрее работала. И были этому какието обьяснения.
Вощем Java рулит. Сечас особенно идет тенденция к переводу софта на Java.


 
pasha_golub ©   (2004-06-29 11:48) [12]

Еще раз обращаю внимание на то, о чем говорил wicked ©   (29.06.04 11:29) [4]

    for (int i = 0; i < max_count; i++)
// тут имеем 100000000 итераций
     for i:=0 to 100000000 do
// тут имеем 100000000 итераций + одну итерацию. Это что не видно?


 
Иванов Александр   (2004-06-29 11:50) [13]


> pasha_golub ©

Одна итерация из 100000000 повлияла на результат?


 
Anatoly Podgoretsky ©   (2004-06-29 11:51) [14]

Нет, но как тогда можно говорить про качество тестирование, к тому никакого понятия об настройках компилятора.


 
pasha_golub ©   (2004-06-29 11:52) [15]

Иванов Александр   (29.06.04 11:50) [13]
Это не важно! Если автор теста не заметил такую вещь, откуда я могу знать, что еще не учтено? ;-)


 
Dmitriy O. ©   (2004-06-29 11:52) [16]


> pasha_golub ©   (29.06.04 11:48) [12]
И что на одну и итерацию тратится 300 мск ?
Все равно даже если это так Java работает по крайне мере адекватно Delphi а не тормозно как многие утверждали.
Вот даже марсаходы работают на Java.


 
wicked ©   (2004-06-29 11:54) [17]

у меня получилось
{$A+,B-,C-,E-,F-,H+,I-,J-,K-,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Z1}


 
wicked ©   (2004-06-29 11:56) [18]

настройки компилятора в смысле...


 
pasha_golub ©   (2004-06-29 11:56) [19]

Dmitriy O. ©   (29.06.04 11:52) [16]
Фух, Дима, ну ты и даешь. Могу пожелать удачи марсоходам. Дай мне только ссылку, где это четко сказано.

Java не работает адекватно, е-мое. Пусть арифметические операции работают примелимо, допустим. Но кроме этого есть еще много других аспектов.


 
Иванов Александр   (2004-06-29 12:00) [20]

Я очень не доверяю сборщикам мусора. В данном примере его работа минимальна.


 
PVOzerski ©   (2004-06-29 12:02) [21]

Рискну кое-что сказать и я, хоть и ориентируюсь не только на свой опыт, а с Java сам не работал.
1) Java - это не совсем интерпретатор, скорее - "компилятор at run-time".
2) Вот есть у меня такое наблюдение. Запускаешь тестовую прогу 1-й раз, получаешь значение быстродействия. Запускаешь 2-й раз - получается, что считает быстрее. Я не знаю, как там ОС делит процессор между задачами, что кэширует - голая эмпирика. Но факт.


 
Dmitriy O. ©   (2004-06-29 12:05) [22]


> Дай мне только ссылку, где это четко сказано.
Sun хочет сделать Java мэйнстримом для корпоративного ПО  28.06.04 13:40 CNews
... известного как API, ранее используемая NASA в системе контроля миссии на Марс.
Сюжет полностью (7) >>
http://www.cnews.ru/newsline/index.shtml?2004/06/28/160621


 
wicked ©   (2004-06-29 12:07) [23]


> Вощем Java рулит. Сечас особенно идет тенденция к переводу
> софта на Java.

голоса из прошлого?... дарагой, Java рулила лет 5 - 7 назад и то в умах некоторых нестабильных личностей...
сейчас Java заняла свою нишу, и то её пытается вытеснить (и весьма успешно) microsoft со своим .net...


 
pasha_golub ©   (2004-06-29 12:12) [24]

Ну, что украинофоб, Дима?
Цитата:

"Напомним, что Project Looking Glass – это ПО, предназначенное для создания трёхмерной среды для десктопов с прозрачными окнами, вращением объектов и другими характеристиками. Java 3D – это часть программного кода, известного как API, ранее используемая NASA в системе контроля миссии на Марс."

ТО есть в ЦУПе для визуализации эту Жаву использовали, а не для марсоходов. Это, раз. Во-вторых, по всей статье разбросано "будет", "собирается" и т.п.



 
wicked ©   (2004-06-29 12:12) [25]

цитата из статьи по ссылке http://www.cnews.ru/newsline/index.shtml?2004/06/28/160621 :

Напомним, что Project Looking Glass – это ПО, предназначенное для создания трёхмерной среды для десктопов с прозрачными окнами, вращением объектов и другими характеристиками. Java 3D – это часть программного кода, известного как API, ранее используемая NASA в системе контроля миссии на Марс.

ну и где здесь про то, что Java на марсоходах стоит?... вот о том, что на НАСовских десктопах - есть, рисует ландшафты она там...


 
wicked ©   (2004-06-29 12:13) [26]

[24]
[25]

:))


 
Dmitriy O. ©   (2004-06-29 12:18) [27]

Блин о том что проги на Java управляют марсаходами твердят уже пол года а вы еще о них не слышали. Вот ссыл ки в Яндех
по ключевам словаи "марс&java"
http://www.yandex.ru/yandsearch?text=%EC%E0%F0%F1%26java&stype=www&nl=0
Цитаты
pdf) Программирование на Java
... США, занимающаяся исследованием космоса) с помощью Java-апплетов управляют роботом, изучающим поверхность Марса ("Java помогает делать историю! ...
www.javagu.ru/files/course/Java_COURSE_Lec01.pdf (279 КБ) 12.05.2003 — совпадение фразы
Сохраненная копия  ·  Похожие документы  ·  Еще с сайта (3)

Свет в Internet
И, опять же при помощи Java, управляется марсоход Spirit, который только что искал на поверхности Марса следы воды и жизни.
www.lightnet.obninsk.ru/news/show_news.php?news_id=720 (9 КБ) — строгое соответствие
Найденные слова  ·  Похожие документы  ·  Рубрика: Интернет


 
pasha_golub ©   (2004-06-29 12:21) [28]

Dmitriy O. ©   (29.06.04 12:18) [27]
Да е-мое, ну скоко можно, ты различаешь апплет и сервлет? Мля, ну сил моих нету. Управляли апплетом - это значит в ЦУПе на десктопе, а вот если бы управляли сервлетом - это значит на марсоходе стоит!


 
iZEN ©   (2004-06-29 12:57) [29]

У меня тоже кое-что есть:
"Тесты производительности платформ"
http://izen5.by.ru/projects/projects.html#benchmarktest

Вычисления с плавающей точкой и Комбинаторика на Java и Delphi - сравнивайте, думайте.


 
StarCon   (2004-06-29 13:02) [30]

iZEN © - спасибо!


 
Danilka ©   (2004-06-29 13:04) [31]

А заодно можно сравнить, например, vcl и swing и тоже подумать.
:))


 
iZEN ©   (2004-06-29 13:13) [32]

to Danilka ©   (29.06.04 13:04) [31].
...в философском смысле: почему тупая и быстрая VCL многим кажется лучше, чем красивая и медленная Swing.


 
Ломброзо ©   (2004-06-29 13:47) [33]

По сравнению с MFC VCL гармонична и стройна.


 
Паниковский ©   (2004-06-29 14:45) [34]

Ломброзо
очень она гармонична чем тебе MFC не понравился?


 
Mystic ©   (2004-06-29 15:23) [35]

Нами были проведены тесты быстродействия языков Delphi и Java на математических операциях *,/,+,-

Кем это --- нами?

Кроме того, скорее всего это тест не на быстродействие, а на качество оптимизатора. Наиболее навороченый компилятор (скажем, Intel C++) сумел бы заменить цикл

for i:=0 to 100000000 do
begin
  v:=v1*v2+v3/v4-v;
end;

на

a := v1*v2+v3/v4;
for i:=0 to 100000000 do
  v := a - v;
 
или даже на

v := PRE_CALC_RESULT; // = v или a-v

Основные проблемы Java, судя по этим тестам, это работа с хипом:

http://www.rsdn.ru/article/devtools/perftest.xml


 
NickD   (2004-06-29 15:45) [36]

Так до сих по никто  не успокоился?

Delphi это ведь не только "голый" Object Pascal и не только "голый"
VCL, который является надстройкой над системными АПИ. Delphi - в первую очередь это не Run-time компилятор, как вы изволили заметить. И если что - то быстре работает на Java написанное "Вот так", то на Delphi это будет работать быстрее написанное "Вот эдак".

Да, язык Java - без сомнения достаточно удобный и современный язык, который способен решать достаточно большое количество задач, к которым в первую очередь можно отнести кросс-платформенность , использование скриптов и скриптовых движков (как в браузерах),  и т.д.

Но давайте, если вы сравниваете конкретно Delphi, то сравнивайте и конкретную Java (с учетом конкретного JIT или JVM или JS или что там еще существует). С учетом того, что и то и то средство имеет несколько путей решения одной и той же задачи.

JIT-компитлятор не может быть быстрее native-программы по определению (т.к. сам явялеется native-программой) (без учета исполнения этих native-программ). Думаю, что этот абзац многим не понравится. Что ж учтите все, тогда и можно будет спорить.

Согласен с (29.06.04 11:51) [14] и к тому же еще сущетствуют АСМ процедуры, что так же является одним из средств Delphi


 
Nick Denry ©   (2004-06-29 15:47) [37]

NickD всмысле Nick Denry


 
StarCon   (2004-06-30 09:02) [38]

jdk новый, версия 1.5.0 beta
вот что интересно - оптимизировал я код, как указал Mystic в дельфи, время выполнения значительно уменьшилось
НО! оптимизировав так же жаба-код опять получаю что жаба значительно быстрее, несмотря на то что работает через виртуальную машину. как так получается?


 
Dmitriy O. ©   (2004-06-30 09:10) [39]


> что жаба значительно быстрее
Java рулит. Сейчас есть тенденция к переходу программирования на Java.


 
StarCon   (2004-06-30 09:16) [40]

вопрос не в том что рулит а что нет
вопрос - почему жаба через виртуальную машину быстрее чем дельфи напрямую... процессор все равно выполняет код, почему код виртуальной машины + код программы быстрее кода программы на дельфи



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.047 c
1-1089032420
мыш
2004-07-05 17:00
2004.07.18
{$R WindowsXPTheme.res} запрещает раскраску тулбара


1-1089017468
_BasiL_
2004-07-05 12:51
2004.07.18
PGP


14-1088593444
Kerk
2004-06-30 15:04
2004.07.18
ENV{ PATH_INFO }


1-1089101004
Шишкин Илья
2004-07-06 12:03
2004.07.18
Выбор каталога


1-1089000676
newver
2004-07-05 08:11
2004.07.18
Передача данных в программу.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский