| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Кто быстрее .NET или J3 |
| Автор: Gregorian 21.12.2006, 17:29 |
| Кто работает быстрее .NET или Java 3? Я слышал что .NET компилирует программу и оптимизирует машинные коды исходя из конфигурации компьютера, а быстрое создание объектов на порядок обходит С++ в некоторых алгоритмах. Java выполняется на абстрактной виртуальной машине, т.е. медленна от рождения, но противоречие в том, что HotSpeed компилятор. Оба стандарта закрыты и разобраться в теории, кто быстрее, до сих пор не удалось. Есть ли в интернете независимые тесты скорости java и .net? Я не хочу религиозных войн, я лишь хочу знать правду! |
| Автор: nerezus 21.12.2006, 20:05 | ||
P.S. А зачем тебе нужна скорость? |
| Автор: Gregorian 21.12.2006, 22:32 |
И где тогда результаты? Компьютер тормозит. Что быстрее, то и стану изучать более подробно. |
| Автор: Gregorian 21.12.2006, 22:52 |
| Программисты в MS халтурщики - это более вероятно при использовании закрытого кода. А java открыла код, следовательно им бояться нечего и можно ожидать более профессиональный код. Я все-таки на java пока остановлюсь. |
| Автор: nerezus 22.12.2006, 07:44 | ||||||
Gregorian,
Добавлено @ 07:45
|
| Автор: LSD 22.12.2006, 12:41 |
Небольшой сравнительный тест, есть даже у нас ;) А вообще, не так сложно устроить сравнительный тест, займись этим. |
| Автор: Sun 22.12.2006, 14:14 |
| А Java 3 это простите какая версия? Что-то не встречал такого названия Чтобы не мучится выбором, лучше изучить обе системы. Благо они очень похожи. Всё равно жабистам приходится и с дот нетом пересекаться и наоборот. |
| Автор: Ch0bits 22.12.2006, 16:56 |
<Тут были зелёные человечки> В точку! Я думаю автор топика имел в виду не саму библиотеку классов, а исполняющую среду JVM и CLR. JVM открыли совсем недавно, а CLR сомневаюсь что когда-нибудь откроют. |
| Автор: nerezus 22.12.2006, 17:42 | ||
|
| Автор: mr.DUDA 22.12.2006, 17:52 |
Что же по-вашему такое Server Edition у виндовозов ? |
| Автор: Sun 22.12.2006, 19:03 |
Да, потрудитесь объяниться, почему Windows 2003 Server не относиться к серверным ОС? |
| Автор: Ch0bits 22.12.2006, 19:09 |
| Серверная ОС, не серверная ОС, это тут не при чём. Java везде работает одинакого хорошо. |
| Автор: nerezus 22.12.2006, 20:20 | ||
Раньше на википедии была статья, в которой затрагивалась "серверность" венды, но ее удалили =) |
| Автор: Hidrag 22.12.2006, 20:24 | ||
Это где новую джаву третей обозвали? Офф ссылку в студию! |
| Автор: Gregorian 22.12.2006, 20:40 |
Нет. |
| Автор: Ch0bits 22.12.2006, 20:44 |
Ой, сорри! Нет, конечно. Я со вчерашнего бух** в тему не врубился. |
| Автор: Sun 22.12.2006, 21:35 | ||
Очень красноречиво |
| Автор: nerezus 22.12.2006, 22:27 |
| Ну например достаточно поддерживать серверные вызовы типа fork, signal и т.д. ) Плюс разграничение прав юзеров должно быть, а не как в винде, где гест может уронить систему в BSOD. |
| Автор: Sun 22.12.2006, 22:43 | ||||
Мда.. А я всегда считал что это системные вызовы
Ээээ... А ты что нибудь слышал про NTFS, ACL, ActiveDirectory??? |
| Автор: nerezus 23.12.2006, 08:21 | ||
Sun, серверные системные вызовы имел ввиду )
да что уж говорить, ведь даже мессаджбокс от геста может в винде завалить в BSOD систему (кстати сплойт сделали пару дней назад на выполнение произвольного кода от лица системы), а заплатки нету. Может M$ не считают это уязвимостью? |
| Автор: nerezus 23.12.2006, 09:35 |
| Т.е. я имел ввиду, что на последней версии венды это возможно, что даже гест может уронить систему(ну и пусть, что непредусмотренным образом, через уязвимость, ведь главное - результат). Или кто-то не согласен? ) Т.е. еще один критерий "серверности": вовремя выходящие заплатки. |
| Автор: Sun 23.12.2006, 12:22 | ||
Советую почитать man по fork и signal. Нет никаких "серверных системных вызовов". Это просто системные вызовы. Аналогом для этих конкретно вызовов в винде являются CreateProcess и CreateEvent.
Ну тут защищать винду не буду, так как добиться быстрого фикса удаеться далеко не всегда. Но в принципе если следить за их новостями, то можно более менее свежие баги накрывать патчами (которые в свою очередь порождают новые баги Но это не критерий "серверности". У множества человеков стоит Windows Server и они вообщем-то счастливы. Не могу сказать что это меня радует, но это так. |
| Автор: nerezus 23.12.2006, 14:21 | ||||
Ну так что, согласен, что гест может уронить венду со всеми апдейтами на сегодняшний момент в BSOD? ) |
| Автор: Sun 23.12.2006, 15:07 | ||||||
fork - это способ порождения процесса в Юникс. Серверность тут вообще непричем. Когда ты запускаешь любую программу на Юникс, даже на компьютере неподключенном к сети - вызывается fork. Процессы в Юниксе имеют вид дерева. При загрузке создается главный процесс system, в котором порождаются все последующие. Каждый новый процесс может породить новый, для которого он будет отцовским. Серверность подразумевает наличие сетевых сервисов - серверов. Вот и всё
Здесь есть разница в архитектуре винды и юникса. В Юниксе это сделано при помощи наследования порожденным процессом всех файловых дескрипторов отцовского процесса. Когда отцовский процесс умирает раньше дочернего, то дочерний переходит в состояние зомби. Но если он обработает сигнал SIGCHLD и закроет файловые дескрипторы отцовского процесса, он станет демоном. То есть сможет жить независимо от процесса который его породил. В винде другой подход - CreateProcess просто создаёт изолированный процесс который ничего не наследует и там нет древовидной структуры. Процесс регистрируется в системе и может взаимодействовать с любыми другими процессами.
Надо провести эксперимент. Если это действительно так, то худо дело. Правда гестовый аккаунт все нормальные админы сносят первым делом. |
| Автор: Gregorian 23.12.2006, 16:32 |
| Любой unix - сервер, а любой windows - не сервер. |
| Автор: Mad 23.12.2006, 16:51 |
Больно уж критичное заевление нельзя олнозначно сказать : вот жто клиентская системма, а вот это серверная это сильно зависит от того, как она используеться и на unix-е можно сделать рабочею станцию, и на винде - сервак вобщемто любач ОС обладающая многозадачностью может использоваться для создания серверов |
| Автор: VectorMan 23.12.2006, 17:28 | ||
Дочерний процесс становится зомби, если родительский процесс не выполнит какой нибудь wait* системный вызов, не важно кто завершается раньше |
| Автор: Sun 23.12.2006, 17:38 | ||
Да, действительно. Просто уже под Юникс несколько лет не программил, кое что забывается Gregorian, но можно всё-таки добиться от тебя определения слова - сервер? Что ты под под этим словом подразумеваешь? |
| Автор: nerezus 23.12.2006, 18:43 | ||||
Я с этим категорически не согласен. Наличие FTP-сервера на моем КПК не делает WindowsMobile серверной осью
Но прикол в том, что имея форк, приняв клиента, можно форкнуться и отправлять клиента в форкнутый процесс, а форкающим ждать новых клиентов. Как это можно реализовать в венде? Треды не предлагать, а асинхронные сокеты.... тоже не предлагать ввиду геморойности Добавлено @ 18:46 О, забыл. У меня же еще на кпк кроме FTP-сервера еще HTTP-прокси и Socks-прокси сервера =) Мой кпк втройне сервер ;) Раньше еще httpd с поддержкой CGI и PHP стоял, но я его удалил, ибо нех ) |
| Автор: Sun 23.12.2006, 19:07 | ||||
Что-то совсем всё смешалось в кучу - кони, люди. Причем вообще форк к клиентам? Клиент обращается к сокету, а кто его открыл - папаша, или сынок - без разницы. Ну есть у тебя в новом процессе файловые дескрипторы папаши и ты их можешь слушать. Ну на винде у тебя в новом трэде абсолютно прозрачный доступ к открытому сокету, неважно кто его открывал. В чём выигрыш? В винде ты когда создал новый трэд, он имеет тоже самое адрессное пространство что и другие трэды процесса и ты можешь имея глобальные ссылки использовать любой объект процесса, будь то сокет или файл. Кроме того можно шарить ресурсы между трэдами. В Юниксе при использовании форка ты работаешь с изолированными процессами. И для обмена данными приходится использовать пайпы и другие файлы, вместо того чтобы получить прямую ссылку на объект.
Если добавить управление пользователями и разграничение прав доступа, то да - серверная ось. |
| Автор: VectorMan 23.12.2006, 19:12 | ||
Апач работающий под виндой по твоему не сервер? Почитай про серверы хотя бы http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80 |
| Автор: nerezus 23.12.2006, 19:51 | ||||||||||||||||
| VectorMan, сервер - это предлагающий услугу. Однако любая ось это способна делать. Просто некоторые предназначены для этого(никсы), а некоторые - нет(хм, пример приводили
Я думаю, что серверная ось не может не закрывать КРИТИЧЕСКИЕ уязвимости на протяжении уже недели. И неизвестно, когда эта заплатка выйдет. Может через месяц? Линк(хотя об уязвимости было известно еще до того, как секлаб это все размести): http://www.securitylab.ru/vulnerability/283245.php Или кто-то не согласен, что выполнение произвольного кода с правами суперпользователя - не критическая уязвимость? Добавлено @ 19:53
|
| Автор: Sun 23.12.2006, 20:21 | ||||||||
Не будет. Но это уже не fork. К тому же трэды есть далеко не на всех Юниксах. Во FreeBSD, к примеру, их нет. Есть либы которые фактически эммулируют работу трэдов, но по сути это теже процессы.
Ну вобщем-то ПХП от оси не зависит. Это скриптовый язык, который и под виндой вполне нормально живет. Кроме того на хостингах вызов fork как правило запрещен, так что советую отвыкать
Нет, просто расширяю вышесказанное. Ну забыл про разграничение прав доступа в предыдущем посте. А я вот до сих пор не пойму какой ты смысл вкладываешь в "серверную ось". Выскажи, и я тоже покритикую
Хотелось бы услышать какие? |
| Автор: VectorMan 23.12.2006, 20:30 | ||
Ещё раз извиняюсь за оффтоп, но потоки во FreeBSD есть. Системный вызов rfork работает почти так же как fork, но дочерний процесс разделяет всю память с родительским, библиотека posix threads использует этот вызов |
| Автор: Sun 23.12.2006, 20:39 | ||
Но если посмотреть top, то он все эти трэды нарисует как процессы, каждый со своим PID. Изначально работа с трэдами туда не вкладывалась. |
| Автор: nerezus 23.12.2006, 20:40 | ||||||||||||
По крайней мере в OpenBSD треды точно есть
Зависит, так как большинство библиотек - просто биндинги и оболочки. Например pcntl_fork() и подобные функции пхп есть только на никсах.
А то натыкали на каждом шагу говнохостингов без необходимых модулей, с регистер глобалс, меджик куотес и прочей дрянью типа safe mode, а большинство людей по ним и судит
Это ПРИМЕРНОЕ мое понимание серверности ОС =)
Ну в плане: 1) сервис/демон (например FTP-сервер) 2) в плане железа (типа "Вон в том шкафу наш сервер") 3) тип конфигурации системы от предназначения(сервер/воркстейшн/игровая конфигурация) |
| Автор: VectorMan 23.12.2006, 20:55 | ||||
А для чего тогда было создавать такой системный вызов? Просто в nix единица выполнения - процесс, а в win - поток, процесс - это просто группа потоков. какая разница как это называть? суть одна
Это скорее можно отнести к проблемам пхп, а не винды Претендуя на кросплатформенность, не стоит вводить ос-зависимые апи з.ы. прекращаю оффтопить в этой теме |
| Автор: nerezus 23.12.2006, 21:08 | ||||||||
P.S. Хотя я видел извращенцев, которые гуи на пхп писали ;) Правда php-gtk загнулся, хотя туда ему и дорога =) К первоисточникам |
| Автор: VectorMan 23.12.2006, 21:09 | ||
Я говорил про потоки создаваемые вызовом rfork в freebsd, читай внимателнее |
| Автор: Sun 23.12.2006, 21:15 | ||
Веление времени. Изначально никаких трэдов там не подразумевалось. (исправлено в связи с более подробным изучением сабжа) Суть разная. Процесс - это не группа потоков. Это отдельная сущность. Архитектурная организация у них разная, способы взаимодействи и уровни изоляции.
Ну тогда о чём мы спорим, если ты для себя всё решил? Если ты думаешь что у Юникс нет security issues, то боюсь тебя ждут серьёзные разочарования. Вообщем как всегда виндовс == сакс == маздай, юникс == рулез == форэва |
| Автор: nerezus 23.12.2006, 21:36 | ||||
Я просто высказался насчет "серверности" венды Спорить я не собирался, но пришлось...
Однако практически сразу после появления ошибки в никсах, она фиксится. В отличии от критических уязвимостей в винде. Сколько там wmf-сплойт гулял до выхода заплатки? Сейчас ситуация такая же. Критическая уязвимость есть, а заплаток нету. |
| Автор: Exception 23.12.2006, 22:37 | ||
А что такое CLI и Rotor? |
| Автор: mr.DUDA 25.12.2006, 00:56 |
| Процесс определяет набор сегментов кода/данных/стека. Поток ничего не определяет, а описывает текущий адрес в сегменте кода (контекст потока) и локальное хранилище, кстати редко используемое. Всё. Наследование процессов реализовано в винде так же как и наследование любого другого объекта ядра (см. параметр bInheritHandles в CreateProcess). Баг с "уязвимостью винды в результате стрёмного мессиджбокса" нашли китайские хакеры, вооружённые IDA |
| Автор: Амортизатор2 25.12.2006, 01:00 | ||
Не собирается под современные версии винды - там #define WIN_VER четко рубит |
| Автор: nerezus 25.12.2006, 08:40 | ||||
| Амортизатор2, кто? что? баг сейчас пашет, не надо "ля-ля"
А то, что куча "серваков" стоят с критическими уязвимостями, и любой четырнадцатилетний прыщавый ламер может их уронить, админам пофигу? Или админы это уже пропатчили? Ибо хороший админ никогда не оставит систему уязвимой. Админы, вы где? Хочу услышать ваше мнение |
| Автор: Sun 25.12.2006, 11:04 |
Админы уже ушли в запой. А вот виндовс админы похоже будут иметь горячие новогодние праздники |
| Автор: nerezus 25.12.2006, 11:51 |
| Мне просто интересно, как админы пропатчили сабж =) Ибо мне непонятно, как это можно сделать без сырцов. Хотя меня гложет смутное подозрение, что большинство(если даже не все) это не исправили. А я то еще хотел ASP.NET изучать... даже книг на 2т.р. по нему купил ) Зря деньги потратил... первый раз жалею =) |
| Автор: Sun 25.12.2006, 11:55 | ||
Легко. Можно перехватывать вызов MessageBoxA и подменять своим, более безопасным. |
| Автор: nerezus 25.12.2006, 12:31 |
| А примерчик? ) |
| Автор: Sun 25.12.2006, 12:44 |
http://rsdn.ru/article/baseserv/IntercetionAPI.xml |