Еще раз о программировании Windows vs. UNIX

Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Еще раз о программировании Windows vs. UNIX

Post by Big Cheese »

(Навеяно дискуссией о сервере для Привета)

Еще раз о пресловутой разнице в программировании "для 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, но тот топик куда-то пропал (или я не смог найти). Интересно было бы посмотреть, чем там дело закончилось.
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

Оракл ? MS Office, MS Internet Explorer ?
Или речь только про бесплатные поделки ?
Удачи@С.Смирнов
User avatar
Arte
Удалена за неоплаченную рекламу
Posts: 104
Joined: 21 Apr 2002 23:57
Location: Latvia -> Ireland

Post by Arte »

Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС. Про Unix/Linux молчу... тама ИИС нетути.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Рассказывали мне про Oracle
На Win он почему то читает через кеш Windows
КРоме того он использует threads вместо процессов, поэтому лимитирован 2Gb
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Vovka
Уже с Приветом
Posts: 1906
Joined: 14 Mar 2001 10:01

Post by Vovka »

Arte wrote:Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС.

А здесь можно поподробней?
Какая конфигурация, что за задача, как тестировали и производительность меряли?
User avatar
Arte
Удалена за неоплаченную рекламу
Posts: 104
Joined: 21 Apr 2002 23:57
Location: Latvia -> Ireland

Post by Arte »

Vovka wrote:А здесь можно поподробней?
Какая конфигурация, что за задача, как тестировали и производительность меряли?

Конечно можно. Ищите в Гугле, или на самом сайте Апача. Линк дать? www.apache.org
Michael Popov
Уже с Приветом
Posts: 991
Joined: 09 Sep 2001 09:01
Location: The Earth

Re: Еще раз о программировании Windows vs. UNIX

Post by Michael Popov »

Big Cheese wrote:... но после просмотра их реализации "мьютекса" для win32 возникает стойкое убеждение, что автор(ы) просто не удосужились прочитать online help на CreateEvent из MSDN.


вот в том-то и дело.
А платформенные баррикады, они как и разруха - в голове.
По большому счету нет никакой разницы на какой платформе писать. Есть только привычки, наработанный опыт, знание библиотек и инструментов. Все это сугубо субьективное.

По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
Best regards,

Michael Popov
User avatar
шпиён
Уже с Приветом
Posts: 3459
Joined: 29 Oct 2002 20:08
Location: US

Re: Еще раз о программировании Windows vs. UNIX

Post by шпиён »

Big Cheese wrote:Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?


Да. Наш софт прекрасно работает и на Win, и на нескольких юниксах (если там компиляторы не начинают пургу гнать, вроде GCC, сошедшего с ума от ::delete на указатель на базовый класс (с виртуальным деструктором, не волнуйтесь). Как раз в одной из библиотек "platform abstraction layer", BTW. :)
User avatar
шпиён
Уже с Приветом
Posts: 3459
Joined: 29 Oct 2002 20:08
Location: US

Re: Еще раз о программировании Windows vs. UNIX

Post by шпиён »

Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.


Не могу согласиться на 100%. Т.е. свой PAL все равно писать надо, но, если речь идет о C++, сейчас уже (год как, с выходом VC7.1) имеет смысл начинать с boost, IMHO. Не полного boost - но тем не менее.
Michael Popov
Уже с Приветом
Posts: 991
Joined: 09 Sep 2001 09:01
Location: The Earth

Re: Еще раз о программировании Windows vs. UNIX

Post by Michael Popov »

шпиён 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
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Еще раз о программировании Windows vs. UNIX

Post by Big Cheese »

Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
А как же разделение труда, специализация и прочий технический прогресс? Или PAL - вещь настолько интимная, что одна мысль об использовании сторонней библиотеки кажется кощунственной? :)
Michael Popov
Уже с Приветом
Posts: 991
Joined: 09 Sep 2001 09:01
Location: The Earth

Re: Еще раз о программировании Windows vs. UNIX

Post by Michael Popov »

Big Cheese wrote:
Michael Popov wrote:По поводу много-платформенных библиотек. Это еще один уровень абстракции. Надо разбираться с еще одним набором тараканов. В результате, если есть необходимость писать много-платформенный сервер, то команда нарабатывает свою библиотеку: проще, дешевле, надежнее и под контролем.
А как же разделение труда, специализация и прочий технический прогресс? Или PAL - вещь настолько интимная, что одна мысль об использовании сторонней библиотеки кажется кощунственной? :)

Нет. Ты же знаешь, "ничего святого" :)
Просто зачастую overhead связанный с необходимостью сделать библиотеку generic enough вырастает до неприемлимых размеров. Авторам библиотеки нужно угодить и мне, и Васе Пупкину и еще сотням потенциальных пользователей. А мне нужно решить мою задачу с заданными параметрами эффективности и к определенному сроку. Так что собственный код выигрывает по сравнению с библиотекой.

Disclaimer: я говорю о библиотеках имплементирующих system concepts (mutexes, threads, memory, sockets). Библиотеки имплементирующие domain knowledge незаменимы.
Best regards,

Michael Popov
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

YellowMan wrote:Оракл ? MS Office, MS Internet Explorer ?
Или речь только про бесплатные поделки ?
Насчет Оракла я не уверен - помнится, несколько лет назад считалось, что Оракл (у нас была версия 7.3) под NT не блещет, в частности из-за того, что не использует особенности fle I/O платформы типа FILE_FLAG_NO_BUFFERING, overlapped I/O и т.п. Может, они это исправили в новых версиях.

MS Office и IE - это все-таки не серверные продукты, для них платформозависимые вещи не настолько критичны. Могу ошибаться, но мне всегда казалось, что не-Виндовс версии Майкрософтовских продуктов (Office, IE) обычно медленнее, отстают по функциональности - одним словом - weak sisters.
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Еще раз о программировании Windows vs. UNIX

Post by Big Cheese »

Michael Popov wrote:Нет. Ты же знаешь, "ничего святого" :)
Просто зачастую overhead связанный с необходимостью сделать библиотеку generic enough вырастает до неприемлимых размеров. Авторам библиотеки нужно угодить и мне, и Васе Пупкину и еще сотням потенциальных пользователей. А мне нужно решить мою задачу с заданными параметрами эффективности и к определенному сроку. Так что собственный код выигрывает по сравнению с библиотекой.
Выигрывает, но при условии, что ты одинаково хорошо понимаешь особенности архитектуры / узкие места и т.п. _всех_ target platforms, иначе - проигрывает. Примеры тому - многие бесплатные и не очень бесплатные продукты...
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

Big Cheese wrote:Могу ошибаться, но мне всегда казалось, что не-Виндовс версии Майкрософтовских продуктов (Office, IE) обычно медленнее, отстают по функциональности - одним словом - weak sisters.

Dlya Mac OS X - tak ono i est'.
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Re: Еще раз о программировании Windows vs. UNIX

Post by Big Cheese »

шпиён wrote:
Big Cheese wrote:Есть ли в природе примеры удачной реализации многоплатформенных продуктов loosely defined as "server applications", одинаково хорошо работающих под UNIX и Windows?


Да. Наш софт прекрасно работает и на Win, и на нескольких юниксах (если там компиляторы не начинают пургу гнать, вроде GCC, сошедшего с ума от ::delete на указатель на базовый класс (с виртуальным деструктором, не волнуйтесь). Как раз в одной из библиотек "platform abstraction layer", BTW. :)
Не поделитесь подробностями (если, конечно, информация не закрытая):
- Как организован код продукта: одна baseline для всех платформ или для каждой платформы - своя?
- Используете ли Вы сторонние PAL и, если да, то какие?
- Используете ли Вы специфичные для Windows вещи, типа overlapped I/O?
- Как у Вас организован процесс - одна команда разрабатывает код для всех платформ, или есть разделение разработчиков по платформам?
- Существует ли "главная" с точки зрения разработки платформа, или все платформы равны?

Заранее спасибо!
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

Arte wrote:Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС. Про Unix/Linux молчу... тама ИИС нетути.


А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ? :pain1:

Notepad вон тоже быстрее Ворда - ну и что ?
Удачи@С.Смирнов
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

YellowMan wrote:
Arte wrote:Ну вот самое простое - возьми Апач. Он и на выне32 быстрее работает (версия больше 2.0) чем местный ИИС. Про Unix/Linux молчу... тама ИИС нетути.


А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ? :pain1:

Notepad вон тоже быстрее Ворда - ну и что ?


Нотепад - ето ИИС? Сомневаюсь, что быстрее будет.
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Arte
Удалена за неоплаченную рекламу
Posts: 104
Joined: 21 Apr 2002 23:57
Location: Latvia -> Ireland

Post by Arte »

YellowMan wrote:А давай поспорим на ящик Гиннеса что я напишу тест который под ИИС будет в 5-10 раз быстрее чем под Виндовым Апачем ? Только что это докажет ? :pain1:

Notepad вон тоже быстрее Ворда - ну и что ?

Процедура передачи гиннеса от тебя ко мне будет затруднена ;)
И потом я так понимаю что тесторовалась загрузка и время обслуживания простейших GET запросов. Никаких наворотов.
Niky
Уже с Приветом
Posts: 550
Joined: 31 Mar 2000 10:01
Location: Moscow --> Baltimore, MD

Post by Niky »

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.
...

Как-то тут не видно, что Апач быстрее. Может не поленитесь все-таки ссылку накопать?
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

Arte wrote:Процедура передачи гиннеса от тебя ко мне будет затруднена ;)
И потом я так понимаю что тесторовалась загрузка и время обслуживания простейших GET запросов. Никаких наворотов.


За своим пивом я сам заеду :) Ну или чек возьму :)
Что и как тестировать я сам выберу - речь ведь идет о том что Апач unconditional быстрее IIS, причем всегда ?
Удачи@С.Смирнов

Return to “Вопросы и новости IT”