LINUX.ORG.RU

Немцы доказали...


0

0

что на Java 1.5.0 можно писать даже 3D-игры. При этом скорость игры измеренная в fps, ничуть не меньше, чем для скомпилированного C-кода

Если кто-то подумал, что взята какая-то левая самодельная игрушка, пусть сходит по ссылке. Сравнивается C-compiled и Java-версия игры Quake 2

>>> Подробности

anonymous

Проверено: Demetrio ()
Ответ на: комментарий от anonymous

>4. Hotspot. Не знаю, насколько он помогает. В любом случае это чисто плюс к прооизводительности, для C (например) Hotspot-а не бывает.

Немного подумал. Может и быть, но более ограниченный, чем, напрмиер, для Java.

anonymous
()
Ответ на: комментарий от anonymous

> 7. Больший потребляемый объем памяти. При большом количестве памяти это почти не влияет.

Самое первое и самое главное заблуждение. На нём строятся все остальные ;)
Смысл в том, что при теоретически неограниченном объёме памяти данное утверждение стремится к истине ;) В реальной ситуации оно до банальности ложно...

annonymous ★★
()
Ответ на: комментарий от JB

>блин, а на перле или питоне игр еще никто не писал?

На пёрле frozen-bubble написан :]

На питоне тоже шота было...

IceD
()
Ответ на: комментарий от anonymous

>хули, пусть гном перепишут на яве, посмеёмся..

"1001 рецепт по уничтожению проекта Gnome"

KDE Press, (c) 2005

%) %) %)

anonymous
()
Ответ на: комментарий от annonymous

>Самое первое и самое главное заблуждение. На нём строятся все остальные ;) >Смысл в том, что при теоретически неограниченном объёме памяти данное утверждение стремится к истине ;) В реальной ситуации оно до банальности ложно...

Что именно ложно? Единственное, что я забыл упомянуть - это нелокальная работа с памятью. Это да, это, наверное, сильно влияет.

WFrag ★★★★
()
Ответ на: комментарий от linux_guru

> напишите тысяч десять строк на асме,
>а потом подумайте как это переделать в C код.
>и окажется что для этого хватит небольшого скрипта.
А чего думать-то? Он уже есть. Называется gcc/bcc/cl.exe/icc/итдcc :).

eXOR ★★★★★
()
Ответ на: комментарий от WFrag

Ну и еще поправка на оффтопик - он очень любит проги в своп выкидывать. В Linux у меня своп в достаточно малой степени задействуется.

WFrag ★★★★
()
Ответ на: комментарий от linux_guru

>напишите тысяч десять строк на асме, >а потом подумайте как это переделать в C код.

>и окажется что для этого хватит небольшого скрипта.

Где ж ты был, когда я Gobliiins декомпилировал! Ведь руками из asm-а в C переводил :)

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

WFrag ★★★★
()
Ответ на: комментарий от IceD

на питоне- все скрипты Baldurs gate 1,2 Icewind Dale 1,2 про Newerwhinter не скажу, не знаю От Troika Game - The Temple of Elemental Evil почти полностью на питоне. Это из известных мне. Для Последней - достаточно заглянуть в корень игрулины после установки и увидеть там python22.dll и еще запчасти от небезизвестной py2exe и все становится ясно :-) А так как TOEE делалась на движке Arcanum ^-)... Хотя последний я не ковырял.

aka_falcon
()
Ответ на: комментарий от libricon

2libricon

>А давно Си стал ассембрером? си уневерсален, а вот ассемблер нет, да еще вроде как си язык высокого уровня, а ассемблер низкого. просто си с адресами помяти работает здорово!

Си - язык таки низкого уровня

bison13
()
Ответ на: комментарий от aka_falcon

BG 1, 2 и ID -- не на питоне, а на Lua? вобщем-то.

anonymous
()
Ответ на: комментарий от WFrag

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

Я что-то не уверен, насчёт НЕБОЛЬШОГО скрипта. По-моему это задача,вообще говоря, нерешаемая.

EasyRider
()
Ответ на: комментарий от carrot

извиняюсь, _asm - это для VC, для gcc просто asm или __asm__

carrot
()
Ответ на: комментарий от Kuzmich

> А я-то думаю, чего он это так тормозит? ;)

Странно. Не замечал. По сравнению хотя бы с Lock On-ом, на Java не написанно :)

Whoo ★★
()
Ответ на: комментарий от EasyRider

Ну смеесси то зря. Если вспомнить для какой архитектуры "C" сочинили, то там то оно вполне верно будет. Существовал на pdp тн "структурный ассемблер", ну очч на C похоже было местами. И код можно было восстановить _однозначно_. Для х86 все конечно гораздо хуже будет. Ну что тут сделать, урод - он и есть урод.

anonymous
()
Ответ на: комментарий от libricon

> кстати в вот под линуксом квака шустрее, даже виндовс-версии!

У меня на RedHat9 была Q3 заметно медленнее чем на w2k

anonymous
()

Ещё вся серия квестов про Петьку и ВИЧа написана на Python.

compress
()

Кстати на виндовую машину если поставить Java Runtime то винда станет в два раза медленнее работать. Я несколько раз пробовал. И тут-же сносить приходилось.

anonymous
()
Ответ на: комментарий от SK

> А под оффтопик есть такая игрушка, названия не помню, но суть в том, что в код размером в 70 с лишком КИЛОБАЙТ они умудрились запихать поддержку DX9(с соответствующей графикой), 3D звука(кажется) и с десяток уровней :-)

KKRIEGGER?

anonymous
()
Ответ на: комментарий от anonymous

>Кстати на виндовую машину если поставить Java Runtime то винда станет в два раза медленнее работать. Я несколько раз пробовал. И тут-же сносить приходилось.

Эххх... Остается только мечтать, что если я снесу JRE, то у меня винда станет в два раза быстрее работать :)

WFrag ★★★★
()
Ответ на: комментарий от anonymous

>1. GC? Насколько мне известно, исходный движок Quake активно использует пулинг.

Свип и компаст + релокация ссылок уходит, однако трейс очевидно никуда не девается.

>7. Больший потребляемый объем памяти. При большом количестве памяти это почти не влияет.

1)Может под досом и не будет влиять. А так ... вспомним про пейдж фаулты, прочие издержки по обслуживанию памяти со стороны OS (можно посмотреть как это в слюниксе сделано) и станет понятно что влияет - еще КАК ВЛИЯЕТ!!! В этом причина №1 всех тормозов и жабских и нетовских. Да и С/C++/... проги с непродуманной стратегией управления памятью - тоже не блещут.

anonymous
()
Ответ на: комментарий от anonymous

>Свип и компаст + релокация ссылок уходит, однако трейс очевидно никуда не девается.

Почему?

>1)Может под досом и не будет влиять. А так ... вспомним про пейдж фаулты, прочие издержки по обслуживанию памяти со стороны OS (можно посмотреть как это в слюниксе сделано) и станет понятно что влияет - еще КАК ВЛИЯЕТ!!! В этом причина №1 всех тормозов и жабских и нетовских. Да и С/C++/... проги с непродуманной стратегией управления памятью - тоже не блещут.

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

Про издержки я ничего толком не знаю, но насколько я представляю структуру x86 издержки должны появляться только при граничных операциях - выделение памяти, своппинг, и.т.д. А так каждая страница уже отображена на физическую память, ядро вроде и не причем :) Ну это так, ламерские рассуждения, я достаточно приближенно знаю эти механизмы...

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>Про издержки я ничего толком не знаю, но насколько я представляю структуру x86 издержки должны появляться только при граничных операциях - выделение памяти, своппинг, и.т.д. А так каждая страница уже отображена на физическую память, ядро вроде и не причем :) Ну это так, ламерские рассуждения, я достаточно приближенно знаю эти механизмы...

А, ну разве что кеш страничных преобразований (вроде есть такой :) ) будет постоянно "промываться". Ну и просто кеш памяти. Тогда да, наверное.

WFrag ★★★★
()
Ответ на: комментарий от bison13

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

anonymous
()
Ответ на: комментарий от anonymous

разруха - в головах. если не умеете управлять памятью на сях - никакая жаба за вас это не сделает чтоб было и быстро и правильно

anonymous
()
Ответ на: комментарий от anonymous

И ERP на ассемблере. То-то смеху будет :)

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> Где ж ты был, когда я Gobliiins декомпилировал!
А я думал, это САЕ и МВК делали. Чужие заслуги себе приписываете? :)

anonymous
()
Ответ на: комментарий от anonymous

>нефиг свистеть еще ни в одной книге по си я не встречал указания что он язык >низкого уровня. мнение красноглазых фанатиков занимающихся скриптологией - >никого неи..

мне это по-моему расскали на лекциях в университете, за давностью лет не помню.

мнение докторов наук вы тоже во внимание не принимаете?

linux_guru
()
Ответ на: комментарий от linux_guru

> мнение докторов наук вы тоже во внимание не принимаете?
Это словоблудие. Дайте определение языка высокого уровня и
докажите, что С под это определение не подходит. Потом
дайте определение ассемблера (смешно даже) и докажите, что
С под это определение подходит.
Либо, если сами не в состоянии, сошлитесь на авторитетный
источник (указав ссылку на него, чтобы мы почитали).
Тогда и поговорим :)

(другой анонимус)

anonymous
()
Ответ на: комментарий от anonymous

>А я думал, это САЕ и МВК делали. Чужие заслуги себе приписываете? :)

Во-первых, я декомпилировал Gobliiins (это первая серия, три героя - три буквы i). А они вроде как вторую версию ковыряли (по крайней мере, именно вторая версия мне попадалась похаканная CAE и MBK).

А во вторых, CAE и MBK до C-шных исходников наверняка не декомпилировали. Они скорее всего только скрипты/ресурсы поковыряли. Ну может бинарник чуток. По крайней мере, единственные _настоящие_ исходники серии Goblins, которые я видел, - это мои :)

Вот, можешь поглядеть: http://gzip.rsdn.ru/Forum/?mid=812013

Так что эта, не надо мои заслуги другим людям приписывать :)

Кстати, я их по всей видимости успешно спихнул в проект ScummVM :) Ждем движок Gobliiins в хорошей обертке :) Особенно прикольно, наверное, на PocketPC будет смотреться, я собственно с этой целью когда-то и декомпилировал :)

WFrag ★★★★
()

Ну если вам нужны примеры вспомним VENIX, если кто не в курсе
это Unix подобная ОС.
Когда она впервые появилась в CCCР, ее исходники не были доступны,
и один из наших программистов, с помощью дизассемблирования напсал
C код при компилирование воссоздающий идентичный машиный код.

linux_guru
()
Ответ на: комментарий от anonymous

смешно.

поспорить хочется?


я честно говоря немного отвлекся,
а перичитывать весь тред лень.

Не могли бы вы указать мне в чем именно я не прав?

linux_guru
()
Ответ на: комментарий от linux_guru

>один из наших программистов, с помощью дизассемблирования напсал C код при компилирование воссоздающий идентичный машиный код.

Что-то я не понял эту фразу

EasyRider
()
Ответ на: комментарий от EasyRider

при компилирование дающий набор бинарных файлов идентичных VENIX.

если проще объяснить то был бинарник, без исходников.

человек написал на С код, который при комплирование давал точно такой же бинарник.

причем этот бинарник был ОС.

так понятнее?

linux_guru
()
Ответ на: комментарий от WFrag

> Вот, можешь поглядеть: http://gzip.rsdn.ru/Forum/?mid=812013
> Так что эта, не надо мои заслуги другим людям приписывать :)
ОК, не буду больше:) Под досом компилять не охота сейчас, верю
на слово что работают:) Да, декомпильнуть гоблинов - это не
хило. Там правда .asm файлов много, но это, как я понял, только
низкоуровневые функции, типа звука на спикер?

> Кстати, я их по всей видимости успешно спихнул в проект ScummVM :)
Однако здесь:
http://scummvm.sourceforge.net/compatibility.php
они не наблюдаются что-то.

anonymous
()
Ответ на: комментарий от linux_guru

Это явно был великий человек. Правда несколько постов назад carrot любезно открыл тайну - как это делается - __asm__

EasyRider
()
Ответ на: комментарий от linux_guru

> поспорить хочется?
Нет. А вот услышать обоснования некоторых громких утверждений -
это не помешало бы.

> Не могли бы вы указать мне в чем именно я не прав?
Я не говорил что кто-то не прав. Попробуйте всего лишь
*обосновать* эту вашу фразу:
-----
си - это универсальный ассемблер,
-----

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

Я не с чем из этого не спорю. Это словоблудие (пока нет
обоснований), что тут спорить то.

------
а если вам непонятно вышеуказанное утверждение,
посмотрите любой комплятор, каким образом он переводит
С код в объектный(Hint Для этого не требуется слишком много работы).
------
И что? "вышеуказанное утверждение" о переводе asm->C, а это -
С->asm, что, мягко говоря, не одно и то же.

anonymous
()
Ответ на: комментарий от anonymous

> ОК, не буду больше:) Под досом компилять не охота сейчас, верю на слово что работают:) Да, декомпильнуть гоблинов - это не хило.

Это полное сумашествие, на самом деле :) Полтора месяца чистого времени угрохал. Энтузиазм, блин :)

>Там правда .asm файлов много, но это, как я понял, только низкоуровневые функции, типа звука на спикер?

Ну да. Тем более, они собственно на asm-е и были написаны.

>Однако здесь: >http://scummvm.sourceforge.net/compatibility.php >они не наблюдаются что-то.

Я только в декабре прошлого года им исходники предоставил. Так что еще все впереди. :) Наверное. Если они не забьют.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

> Я только в декабре прошлого года им исходники предоставил. Так что еще
> все впереди. :) Наверное. Если они не забьют.
Надеюсь, им не придётся портировать эти исходники с bcc на gcc?
А то ведь и правда забьют... :)

anonymous
()
Ответ на: комментарий от anonymous

вы не согласны с тем что с ассемлера легко перевести на С?

это утверждение я сделал на основе своего опыта переписывания программ ранее написанных на ассемлере на С.

У меня так и дошли руки автомотизировать этот процесс, но в процессе переписывания я увидел что это вполне возможно,
если при написании асемлерного кода придерживать некоторых правил.

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

linux_guru
()
Ответ на: комментарий от linux_guru

>человек написал на С код, который при комплирование давал точно такой же бинарник

Вы путаете перевернутую букву E c перевернутой буквой A. ;-) То что существует одна такая прога, или даже "скрипт" который перевел эту одну прогу из C в асм, совершенно не доказывает, что возможно написать универсалный "скрипт", который из асма делает С. Так что не преуменьшайте труд человека, который это сделал.

По существу: несколькими постами выше, я пообщал денег за этот "скрипт". Мое предложение все еще в силе. Если Вы считаете, что это настолько просто - напишите, и получите свои $1000.

alt-x ★★★★★
()

Вы посмотрите на исходники игры.
Там от ООП практически ничего не осталось.
Все методы - static.
new используется или для массивов, или для статических inner-классов, или для callback'ов. И все.

Вот вам и оптимизация Явы -задержка только при запуске.
А теперь посмотрим на программу (http://www.sergeydmitriev.com/mps/mps100.zip), написанную Сергеем Дмитриевым, сооснователем JetBrains.
Класс jetbrains.semanticIP000.ide.IdeMain.
Практически все static. Наверное эту технику используют при написании Intellij IDEA. Вот она и работает быстро.


anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.