Нафига козе боян?
Я не прошу в ответах кидать сюда ссылки на другие сайты где можно почитать длинные, пространные и замудрёные статьи о точканете. Я хочу услышать ПРОСТОЙ и по-возможности КОРОТКИЙ ответ на вопрос озвученный выше. Заранее благодарю.:)
И да, ты уже потестил, рвёт Java-версия всех остальных? Удивляет, что на сайте я таких тестов не нашёл. Казалось бы, они непременно должны были бы быть, если бы рвала.
Тестить они предлагают сами. Это не сложно.
Клиентская java:
ip.jar" b
LZMA (Java) 4.61 2008-11-23
Compressing Decompressing
1191 KB/s 1402 MIPS 13791 KB/s 1355 MIPS
1180 KB/s 1389 MIPS 13837 KB/s 1359 MIPS
1191 KB/s 1402 MIPS 13791 KB/s 1355 MIPS
1213 KB/s 1428 MIPS 13086 KB/s 1285 MIPS
1190 KB/s 1402 MIPS 13086 KB/s 1285 MIPS
1202 KB/s 1416 MIPS 13791 KB/s 1355 MIPS
1202 KB/s 1416 MIPS 13791 KB/s 1355 MIPS
1202 KB/s 1416 MIPS 13791 KB/s 1355 MIPS
1202 KB/s 1416 MIPS 13791 KB/s 1355 MIPS
1202 KB/s 1416 MIPS 13791 KB/s 1355 MIPS
---------------------------------------------------
1197 KB/s 1410 MIPS 13648 KB/s 1341 MIPS Average
Серверная не запустилась:
t\SevenZip.jar" b
Error: no `server' JVM at `c:\Program Files\Java\jre6\bin\server\jvm.dll'.
C# в релизе:
lone\bin\Release\Lzma#.exe" b
LZMA# 4.61 2008-11-23
Compressing Decompressing
1010 KB/s 1190 MIPS 14978 KB/s 1509 MIPS
1010 KB/s 1190 MIPS 14978 KB/s 1509 MIPS
1008 KB/s 1187 MIPS 14978 KB/s 1509 MIPS
1013 KB/s 1193 MIPS 14978 KB/s 1509 MIPS
1013 KB/s 1193 MIPS 14978 KB/s 1509 MIPS
1015 KB/s 1196 MIPS 14978 KB/s 1509 MIPS
1005 KB/s 1184 MIPS 14978 KB/s 1509 MIPS
1013 KB/s 1193 MIPS 14978 KB/s 1509 MIPS
1015 KB/s 1196 MIPS 14978 KB/s 1509 MIPS
1015 KB/s 1196 MIPS 14978 KB/s 1509 MIPS
---------------------------------------------------
1012 KB/s 1192 MIPS 14978 KB/s 1509 MIPS Average
C++ было влом компилировать (там dsw файлы для дремучего VisualC++ 6.0), хватило возни с NetBeans (кстати до проклятий дошло), но и так ясно что он тут всех порвет. :))
Прикол Джавы не в том, что бы писать архиваторы, графические редакторы (про браузеры - ну хз, если честно).
Ладно, черт с ними, с ахиваторами. Но работа с графикой подразумевает использование возможностей железа. SIMD те же, различные встроенные в GPU технологии. Написать можно и на JAVA, нивопрос, вот только смысла в этом?
Спасибо. Что-то уж больно подозрительно близкие результаты вышли. Чудеса. Ну и рвучесть Java на этом тесте не доказана, если я правильно понял (сжали чуть быстрее, разжали чуть медленнее).
Прикол Джавы не в том, что бы писать архиваторы, графические редакторы (про браузеры - ну хз, если честно).
Ладно, черт с ними, с ахиваторами. Но работа с графикой подразумевает использование возможностей железа. SIMD те же, различные встроенные в GPU технологии. Написать можно и на JAVA, нивопрос, вот только смысла в этом?
Сказали, что рвёт, пусть рвёт :) Сказали, что самооптимизируется под железо, так что не должно беспокоить, какие там тонкости :)
Не, если серьёзно, то подойдёт любой пример, где ПО на Java по скорости производительнее аналога на C. Сами же не приводят, вот и пытаюсь помочь. Просто, раньше я видел достоинства Java в другом, потому мне стало интересно.
З.Ы. Последним предложением я провоцирую!:)
Любое сложное ПО где приходится постоянно создавать и разрушать объекты. (создание объекта в .NET/Java фактически бесплатно, ибо память выделяется последовательно). Архиватор - конечно же не тот случай, но ты просил архиватор на Java/C# - я тебе его показал. А вот любое мало-мальски сложное веб-приложение будет рвать C. Хотя бы потому, что на C написать его крайне сложно.
перефразирую.
УКи, а давайте прекратим спорить о преимуществах левой руки над правой ногой и вернемся к сути беседы.
Почему не тот случай? Ну ладно, пусть. А браузер - тот случай? Какой конкретный вид настольных программ - тот случай?
Речь о серверных приложениях? Ну так я давно допустил такую возможность (с той самой хитрой оптимизацией при запуске). Зачем тут приплетать человеческий фактор? С ним и так всё ясно.
LZMA (Java) 4.61 2008-11-23
Compressing Decompressing
1213 KB/s 1429 MIPS 14576 KB/s 1432 MIPS
1213 KB/s 1428 MIPS 14576 KB/s 1432 MIPS
1213 KB/s 1429 MIPS 14524 KB/s 1427 MIPS
1202 KB/s 1416 MIPS 14524 KB/s 1427 MIPS
1202 KB/s 1416 MIPS 14576 KB/s 1432 MIPS
1202 KB/s 1416 MIPS 14524 KB/s 1427 MIPS
1202 KB/s 1416 MIPS 14524 KB/s 1427 MIPS
1202 KB/s 1416 MIPS 14576 KB/s 1432 MIPS
1202 KB/s 1416 MIPS 14576 KB/s 1432 MIPS
1202 KB/s 1416 MIPS 14576 KB/s 1432 MIPS
---------------------------------------------------
1205 KB/s 1420 MIPS 14555 KB/s 1430 MIPS Average
D:\lzma912.tar\Java>"c:\views\third-party\jdk\jdk1.6.0_17\bin\java.exe" -server -jar SevenZip.jar b
LZMA (Java) 4.61 2008-11-23
Compressing Decompressing
1149 KB/s 1354 MIPS 17504 KB/s 1719 MIPS
1149 KB/s 1354 MIPS 17504 KB/s 1719 MIPS
1149 KB/s 1354 MIPS 17429 KB/s 1712 MIPS
1149 KB/s 1354 MIPS 18703 KB/s 1837 MIPS
1129 KB/s 1330 MIPS 17429 KB/s 1712 MIPS
1139 KB/s 1342 MIPS 17429 KB/s 1712 MIPS
1139 KB/s 1342 MIPS 18703 KB/s 1837 MIPS
1149 KB/s 1353 MIPS 17504 KB/s 1719 MIPS
1149 KB/s 1354 MIPS 17504 KB/s 1719 MIPS
1149 KB/s 1354 MIPS 17504 KB/s 1719 MIPS
---------------------------------------------------
1145 KB/s 1349 MIPS 17708 KB/s 1739 MIPS Average
D:\lzma912.tar\Java>
Хм, согласен, что выделение памяти под объект в дотнете очень быстрое (про устройство JVM знаю очень мало). Насколько мне известно, в .NET сборщик мусора перемещающий, поэтому выделяется память под объекты очень быстро. Но тогда при сборке мусора времени уйдёт много. Не сведёт ли это на нет выгоду от быстрого выделения? И в среднем выйдет как и в С. Не?
И ещё у меня вопрос: если в управляемом коде будет использоваться неуправляемый - его сборщик мусора трогать не будет, даже перемещающий. И вот если таких кусков неуправляемого кода будет несколько в разных местах памяти - не может ли это привести к ухудшению скорости выделения памяти?
Объекты, которые созданы и стали ненужными ("умерли") между запусками GC считаются неродившимися вовсе. Потому далеко не всегда объекты будут хотябы раз перемещены в памяти, а объекты из кучи крупных объектов вообще не перемещаются в памяти.
В .NET есть управляемые кучи - вотчины GC - и неуправляемые, в них, например, выделяется память под скомпилированный код и COM-объекты.
PS. Советую изучить статью GC в .NET.