Еще раз о программировании Windows vs. UNIX
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Еще раз о программировании Windows vs. UNIX
(Навеяно дискуссией о сервере для Привета)
Еще раз о пресловутой разнице в программировании "для Window" vs. "для UNIX" (ну, там, threads vs. processes, далее везде...) Понятно, что Юниксов разных много, но стиль программирования там вроде как один и тот же, и он (стиль) весьма отличается от Windows API, так что на мой взгляд такое сравнение не должно быть сильно надуманым.
Неужели эта разница настолько принципиальна, что не позволяет с приемлимыми издержками на написание/покупку некой platform abstraction lib собирать из единой codebase сравнимые по производительности версии продукта для win и для *nix?
Ибо создается впечатление, что если некий "серверный" программный продукт разрабатывается (изначально) на Unix, то от его Windows версии ничего хорошего в плане производительности ждать не приходится. Например, смотрю я на BerkeleyDB - вроде неплохая система: удобная, многоплатформенная, но после просмотра их реализации "мьютекса" для win32 возникает стойкое убеждение, что автор(ы) просто не удосужились прочитать online help на CreateEvent из MSDN. Из других примеров можно привести, например, Apache, MySQL, и, наверно, Tomcat.
Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?
Интересуют мнения с обоих сторон баррикад
PS: помнится, tengiz когда-то давно интересовался сравнением Uniх API c Win32 API on NT platform, но тот топик куда-то пропал (или я не смог найти). Интересно было бы посмотреть, чем там дело закончилось.
Еще раз о пресловутой разнице в программировании "для Window" vs. "для UNIX" (ну, там, threads vs. processes, далее везде...) Понятно, что Юниксов разных много, но стиль программирования там вроде как один и тот же, и он (стиль) весьма отличается от Windows API, так что на мой взгляд такое сравнение не должно быть сильно надуманым.
Неужели эта разница настолько принципиальна, что не позволяет с приемлимыми издержками на написание/покупку некой platform abstraction lib собирать из единой codebase сравнимые по производительности версии продукта для win и для *nix?
Ибо создается впечатление, что если некий "серверный" программный продукт разрабатывается (изначально) на Unix, то от его Windows версии ничего хорошего в плане производительности ждать не приходится. Например, смотрю я на BerkeleyDB - вроде неплохая система: удобная, многоплатформенная, но после просмотра их реализации "мьютекса" для win32 возникает стойкое убеждение, что автор(ы) просто не удосужились прочитать online help на CreateEvent из MSDN. Из других примеров можно привести, например, Apache, MySQL, и, наверно, Tomcat.
Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?
Интересуют мнения с обоих сторон баррикад
PS: помнится, tengiz когда-то давно интересовался сравнением Uniх API c Win32 API on NT platform, но тот топик куда-то пропал (или я не смог найти). Интересно было бы посмотреть, чем там дело закончилось.
-
- Уже с Приветом
- Posts: 1099
- Joined: 30 Sep 1999 09:01
- Location: Bryansk,RUSSIA >> Dublin, Ireland
-
- Удалена за неоплаченную рекламу
- Posts: 104
- Joined: 21 Apr 2002 23:57
- Location: Latvia -> Ireland
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
-
- Удалена за неоплаченную рекламу
- Posts: 104
- Joined: 21 Apr 2002 23:57
- Location: Latvia -> Ireland
Vovka wrote:А здесь можно поподробней?
Какая конфигурация, что за задача, как тестировали и производительность меряли?
Конечно можно. Ищите в Гугле, или на самом сайте Апача. Линк дать? www.apache.org
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Re: Еще раз о программировании Windows vs. UNIX
Big Cheese wrote:... но после просмотра их реализации "мьютекса" для win32 возникает стойкое убеждение, что автор(ы) просто не удосужились прочитать online help на CreateEvent из MSDN.
вот в том-то и дело.
А платформенные баррикады, они как и разруха - в голове.
По большому счету нет никакой разницы на какой платформе писать. Есть только привычки, наработанный опыт, знание библиотек и инструментов. Все это сугубо субьективное.
По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 3459
- Joined: 29 Oct 2002 20:08
- Location: US
Re: Еще раз о программировании Windows vs. UNIX
Big Cheese wrote:Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?
Да. Наш софт прекрасно работает и на Win, и на нескольких юниксах (если там компиляторы не начинают пургу гнать, вроде GCC, сошедшего с ума от ::delete на указатель на базовый класс (с виртуальным деструктором, не волнуйтесь). Как раз в одной из библиотек "platform abstraction layer", BTW.
-
- Уже с Приветом
- Posts: 3459
- Joined: 29 Oct 2002 20:08
- Location: US
Re: Еще раз о программировании Windows vs. UNIX
Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
Не могу согласиться на 100%. Т.е. свой PAL все равно писать надо, но, если речь идет о C++, сейчас уже (год как, с выходом VC7.1) имеет смысл начинать с boost, IMHO. Не полного boost - но тем не менее.
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Re: Еще раз о программировании Windows vs. UNIX
шпиён wrote:Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
Не могу согласиться на 100%. Т.е. свой PAL все равно писать надо, но, если речь идет о C++, сейчас уже (год как, с выходом VC7.1) имеет смысл начинать с boost, IMHO. Не полного boost - но тем не менее.
Kaк всегда: it depends Сотни влияющих факторов. Диапазон выбора: от ANSI C (Win32/POSIX) до JavaEE/.NET. Mне в основном приходится сталкиваться с задачами, для которых левая часть диапазона больше подходит.
Kроме того, если не ошибаюсь boost существенно отличается от 3rd party библиотек вроде RogueWave and others.
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Re: Еще раз о программировании Windows vs. UNIX
А как же разделение труда, специализация и прочий технический прогресс? Или PAL - вещь настолько интимная, что одна мысль об использовании сторонней библиотеки кажется кощунственной?Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Re: Еще раз о программировании Windows vs. UNIX
Big Cheese wrote:А как же разделение труда, специализация и прочий технический прогресс? Или PAL - вещь настолько интимная, что одна мысль об использовании сторонней библиотеки кажется кощунственной?Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
Нет. Ты же знаешь, "ничего святого"
Просто зачастую overhead связанный с необходимостью сделать библиотеку generic enough вырастает до неприемлимых размеров. Авторам библиотеки нужно угодить и мне, и Васе Пупкину и еще сотням потенциальных пользователей. А мне нужно решить мою задачу с заданными параметрами эффективности и к определенному сроку. Так что собственный код выигрывает по сравнению с библиотекой.
Disclaimer: я говорю о библиотеках имплементирующих system concepts (mutexes, threads, memory, sockets). Библиотеки имплементирующие domain knowledge незаменимы.
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Насчет Оракла я не уверен - помнится, несколько лет назад считалось, что Оракл (у нас была версия 7.3) под NT не блещет, в частности из-за того, что не использует особенности fle I/O платформы типа FILE_FLAG_NO_BUFFERING, overlapped I/O и т.п. Может, они это исправили в новых версиях.YellowMan wrote:Оракл ? MS Office, MS Internet Explorer ?
Или речь только про бесплатные поделки ?
MS Office и IE - это все-таки не серверные продукты, для них платформозависимые вещи не настолько критичны. Могу ошибаться, но мне всегда казалось, что не-Виндовс версии Майкрософтовских продуктов (Office, IE) обычно медленнее, отстают по функциональности - одним словом - weak sisters.
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Re: Еще раз о программировании Windows vs. UNIX
Выигрывает, но при условии, что ты одинаково хорошо понимаешь особенности архитектуры / узкие места и т.п. _всех_ target platforms, иначе - проигрывает. Примеры тому - многие бесплатные и не очень бесплатные продукты...Michael Popov wrote:Нет. Ты же знаешь, "ничего святого"
Просто зачастую overhead связанный с необходимостью сделать библиотеку generic enough вырастает до неприемлимых размеров. Авторам библиотеки нужно угодить и мне, и Васе Пупкину и еще сотням потенциальных пользователей. А мне нужно решить мою задачу с заданными параметрами эффективности и к определенному сроку. Так что собственный код выигрывает по сравнению с библиотекой.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Re: Еще раз о программировании Windows vs. UNIX
Не поделитесь подробностями (если, конечно, информация не закрытая):шпиён wrote:Big Cheese wrote:Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?
Да. Наш софт прекрасно работает и на Win, и на нескольких юниксах (если там компиляторы не начинают пургу гнать, вроде GCC, сошедшего с ума от ::delete на указатель на базовый класс (с виртуальным деструктором, не волнуйтесь). Как раз в одной из библиотек "platform abstraction layer", BTW.
- Как организован код продукта: одна baseline для всех платформ или для каждой платформы - своя?
- Используете ли Вы сторонние PAL и, если да, то какие?
- Используете ли Вы специфичные для Windows вещи, типа overlapped I/O?
- Как у Вас организован процесс - одна команда разрабатывает код для всех платформ, или есть разделение разработчиков по платформам?
- Существует ли "главная" с точки зрения разработки платформа, или все платформы равны?
Заранее спасибо!
-
- Уже с Приветом
- Posts: 1099
- Joined: 30 Sep 1999 09:01
- Location: Bryansk,RUSSIA >> Dublin, Ireland
Arte wrote:Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС. Про Unix/Linux молчу... тама ИИС нетути.
А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ?
Notepad вон тоже быстрее Ворда - ну и что ?
Удачи@С.Смирнов
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
YellowMan wrote:Arte wrote:Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС. Про Unix/Linux молчу... тама ИИС нетути.
А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ?
Notepad вон тоже быстрее Ворда - ну и что ?
Нотепад - ето ИИС? Сомневаюсь, что быстрее будет.
Верить нельзя никому - даже себе. Мне - можно!
-
- Удалена за неоплаченную рекламу
- Posts: 104
- Joined: 21 Apr 2002 23:57
- Location: Latvia -> Ireland
YellowMan wrote:А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ?
Notepad вон тоже быстрее Ворда - ну и что ?
Процедура передачи гиннеса от тебя ко мне будет затруднена
И потом я так понимаю что тесторовалась загрузка и время обслуживания простейших GET запросов. Никаких наворотов.
-
- Уже с Приветом
- Posts: 550
- Joined: 31 Mar 2000 10:01
- Location: Moscow --> Baltimore, MD
Arte wrote:Vovka wrote:А здесь можно поподробней?
Какая конфигурация, что за задача, как тестировали и производительность меряли?
Конечно можно. Ищите в Гугле, или на самом сайте Апача. Линк дать? www.apache.org
Пока что навскидку попалось только это: http://www.extremetech.com/article2/0,1558,74941,00.asp.
...
And, based on our tests, we agree. eWEEK Labs compared the performance of Apache 2.0 and Microsoft Corp.'s Internet Information Services 5.0, both running on Windows 2000 Advanced Server. Apache kept pace with IIS during the entire test, which means that sites that move from IIS to Apache 2.0 on Windows won't have to worry about taking a performance hit.
...
Как-то тут не видно, что Апач быстрее. Может не поленитесь все-таки ссылку накопать?
-
- Уже с Приветом
- Posts: 1099
- Joined: 30 Sep 1999 09:01
- Location: Bryansk,RUSSIA >> Dublin, Ireland
Arte wrote:Процедура передачи гиннеса от тебя ко мне будет затруднена
И потом я так понимаю что тесторовалась загрузка и время обслуживания простейших GET запросов. Никаких наворотов.
За своим пивом я сам заеду Ну или чек возьму
Что и как тестировать я сам выберу - речь ведь идет о том что Апач unconditional быстрее IIS, причем всегда ?
Удачи@С.Смирнов