Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

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

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

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


 
StarCon   (2004-06-30 09:18) [41]

мне вот указали на JRokit - быстрейшую жаба-машину
на некоторых операциях она бьет дельфи более чем в 20 раз
магия какая-то :)


 
cyborg ©   (2004-06-30 09:29) [42]

Какая это магия?
Вот это убери Edit1.Text:=IntToStr((GetTickCount()-t)); и в яве тоже, тестируй без вывода на экран.


 
cyborg ©   (2004-06-30 09:33) [43]

И к тому же, всё вот это дело v:=v1*v2+v3/v4-v; по идее посчитается компилятором из констант и больше не будет считаться. Сто миллионов пустой цикл какой-то получается.

А насчёт [42] cyborg ©   (30.06.04 09:29) я не то смотрел :)


 
cyborg ©   (2004-06-30 09:34) [44]

Да блин, вообще касой я стал :), всё правильно там.


 
SPeller ©   (2004-06-30 09:35) [45]


D: - Вощем Java рулит. Сечас особенно идет тенденция к переводу  софта на Java.
- Java не работает адекватно, е-мое. Пусть арифметические операции работают примелимо, допустим. Но кроме этого есть еще много других аспектов.
- Java - это не совсем интерпретатор, скорее - "компилятор at run-time".
- голоса из прошлого?... дарагой, Java рулила лет 5 - 7 назад.
D: - Sun хочет сделать Java мэйнстримом для корпоративного ПО.
- Java 3D – это часть программного кода, известного как API, ранее используемая NASA в системе контроля миссии на Марс.
D: - Java рулит. Сейчас есть тенденция к переходу программирования  на Java.

Дима как обычно в своем репертуаре :-))


 
StarCon   (2004-06-30 10:47) [46]

ну хорошо, вот оптимизированный код:
var
 t,y:cardinal;
 i:integer;
 v,v1,v2,v3,v4,v5,v6,a: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();
 a := v1*v2+v3/v4;
 for i:=0 to 100000000 do
 begin
   v:=a-v;
 end;
 y := GetTickCount()-t;
 Edit1.Text:=IntToStr(y);
end;
на моем компьюторе выполняется - 1578
почему такой же код на жабе выполняется - 1438?
настройки компилятора выставил по рекомендациям (кстати совсем никакого эффекта не дали).


 
wicked ©   (2004-06-30 11:06) [47]

ну блин, человек дает... меряет пиписки двум продуктам и силится кому-то что-то доказать... спрошу прямо....
> StarCon [46]
дарагой, тебе заплатили?... :)
нравится ява - пользуй яву...
не нравится - пользуй что-то другое...
по любому никто тут сразу не кинется писать на яве...


 
wicked ©   (2004-06-30 11:07) [48]

в догонку - тест очень синтетический и с реальной жизнью имеет очень мало общего...


 
Real ©   (2004-06-30 11:24) [49]

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


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

А мож дело в константах. Java прочитала один раз и больше пропускает их А Delphi читает каждый цикл по новой.
Мож попробывать без констант в каждом цикле изменяя значения переменных.


 
cyborg ©   (2004-06-30 11:29) [51]

Вот на фрипаскале написал, только с целыми числами:


program test;
Uses windows;
var
t,y:cardinal;
i:integer;
v,v1,v2,v3,v4,v5,v6,a:Longint;
begin
v:=45647;
v1:=-1235;
v2:=4657252;
v3:=34722;
v4:=-2372236;
v5:=234111230;
v6:=2342;

t:=GetTickCount();
a := v1*v2+v3-v4;
for i:=0 to 100000000 do
begin
  v:=a-v;
end;
y := GetTickCount()-t;
WriteLN("V:=",V," v:=a-v | Time: ", y);

v:=45647;

t:=GetTickCount();
for i:=0 to 100000000 do
begin
  v:=(v1*v2+v3-v4)-v;
end;
y := GetTickCount()-t;
WriteLN("V:=",V," v:=(v1*v2+v3-v4)-v | Time: ",y);

v:=45647;

t:=GetTickCount();
for i:=0 to 100000000 do
begin
  asm
  MOV EDX,A;
  SUB EDX,V;
  MOV V,EDX;
  end;
end;
y := GetTickCount()-t;
WriteLN("V:=",V," ASM v:=a-v | Time: ",y);

WriteLN("Press ENTER to exit:");
ReadLN;
end.


Результат:


V:=-1454377613 v:=a-v | Time: 851
V:=-1454377613 v:=(v1*v2+v3-v4)-v | Time: 1282
V:=-1454377613 ASM v:=a-v | Time: 711
Press ENTER to exit:


На Duron 800 MHz


 
Danilka ©   (2004-06-30 11:33) [52]

:))
нигде тут собака и не рылась. что значит "интерпретируемый"? по-вашему интерпритатор берет одну команду, например, v:=a-v, парсит ее, исполняет, затем читает следующую команду?
дык, тогда эту яву вообще невозможно было-бы запускать. :))
там все намного сложнее, в данном случае цикл отрабатывает уже откомпиленый и оптимизированный.


 
StarCon   (2004-06-30 11:52) [53]

всем спасибо! вопрос снят


 
azerty   (2004-06-30 20:51) [54]

as part of ... see article "Кто сегодня самый шустрый?" on http://rsdn.ru


 
iZEN ©   (2004-06-30 20:54) [55]

to azerty   (30.06.04 20:51) [54].
Безбожно устарело, там ещё Java2 1.3 сравнивается.



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

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.039 c
1-1089235850
Alex_Rom
2004-07-08 01:30
2004.07.18
Цвет фона в HotKey


1-1089207932
Andy BitOff
2004-07-07 17:45
2004.07.18
Сохранение массива.


1-1089017973
sergeii
2004-07-05 12:59
2004.07.18
Помогите с определением компонента и есле компонент типа EDIT то


1-1088685832
Новенький
2004-07-01 16:43
2004.07.18
Проверка на изменения


8-1082823744
Pa5ha
2004-04-24 20:22
2004.07.18
DrawIndexedPrimitives & Baga