The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

asmttpd - http-сервер на ассемблере[BR], opennews (??), 20-Май-15, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "asmttpd - http-сервер на ассемблере"  +12 +/
Сообщение от Аноним (-), 20-Май-15, 12:10 
> Интересно, что несмотря на то, что код написан на ассемблере, проведённые
> пользователями тесты производительности показывают существенное отставание
> по скорости обработки запросов от современных http-серверов, написанных
> на языке Си.

Прям чудеса...

Ответить | Правка | Наверх | Cообщить модератору

10. "asmttpd - http-сервер на ассемблере"  +18 +/
Сообщение от Crazy Alex (ok), 20-Май-15, 12:21 
Попытки тривиально реализовать сложные вещи всегда примерно так и кончаются.
Ответить | Правка | Наверх | Cообщить модератору

55. "asmttpd - http-сервер на ассемблере"  +5 +/
Сообщение от ram_scan (?), 20-Май-15, 15:20 
Он просто синхронный и потоковый. Почти как в книжке "пишем свой хттп сервер за полтора часа для чайников". Единственное что сделано чуть сложнее - он не на каждый коннект тред рожает, а держит пул засуспенженых ниток под это дело.

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

Ответить | Правка | Наверх | Cообщить модератору

57. "asmttpd - http-сервер на ассемблере"  +3 +/
Сообщение от Crazy Alex (ok), 20-Май-15, 15:39 
Ну я примерно об этом и говорил. Только чем больше навернёте сложность реализации - тем более проблемно будет всё это на ассемблере ваять.
Ответить | Правка | Наверх | Cообщить модератору

58. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от Аноним (-), 20-Май-15, 15:44 
ваять не сложно, поддерживать нереально потом )
Ответить | Правка | Наверх | Cообщить модератору

102. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Crazy Alex (ok), 21-Май-15, 02:59 
Ваять - тоже не слишком радостно, но поддержка, разумеется, подразумевалась - иначе кому такое чудо вообще нужно, без поддержки? Разве что как курсовик...
Ответить | Правка | Наверх | Cообщить модератору

59. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от ram_scan (?), 20-Май-15, 15:45 
Да на самом деле будет практически так-же. Даже по обьему кода выйдет стока-же. Просто мыслить в коллбэчной модели асинхронного приложения надо привыкать, а мозги наизнанку выворачивать лениво, проще параллельно и перпендикулярно накодерасить.

Кстати кажет он производительность чуть меньшую чем у апачи который сделан ровно через то же самое место.

Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

129. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Аноним (-), 21-Май-15, 18:17 
> мозги наизнанку выворачивать лениво, проще параллельно и перпендикулярно накодерасить.

Если ассемблерщик не может в event-driven - это нуб и олух, а не ассемблерщик.

Так, на подумать: а ничего что прерывания и исключения - это всего лишь этакая хардварная реализация callback-ов? И если ассемблерщик это не умеет - это какой-то очень хреновый и мягкотелый ассемблерщик :)

Ответить | Правка | Наверх | Cообщить модератору

148. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от myc (?), 22-Май-15, 13:52 
Программирование на epoll/kqueue/poll/select + неблокирующий read/write и коллбэчная модель это ортогональные штуки.
Можно из без коллбэков, но с ними удобнее.
Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

150. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Аноним (-), 22-Май-15, 15:49 
Напомнило творчество одного деятеля, который "для производительности" написал веб-приложение на С ... работающее через CGI. Сильно удивлялся, когда я переписал это дело на богомерзком похапе и получил в 40 раз больше RPS :)
Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

99. "asmttpd - http-сервер на ассемблере"  +8 +/
Сообщение от Анончег (?), 21-Май-15, 01:09 
> Из запланированных на ближайшее будущее возможностей отмечается формирование индекса содержимого директорий и поддержка заголовка HEAD.

Зря они это надумали, бинарник ведь раздует килобайт эдак до воьсми с половиной, и куда они потом с этой махиной.

Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

109. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от cmp (ok), 21-Май-15, 05:02 
для amd64 не страшно, если бы под arm делали, а так, пускай))
Ответить | Правка | Наверх | Cообщить модератору

18. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от iPony (?), 20-Май-15, 12:48 
Логично. Ассемблер же не волшебная палочка. Хорошо написанный код на СИ в общем случае не улучшишь с помощью ассемблера.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

19. "asmttpd - http-сервер на ассемблере"  –11 +/
Сообщение от bircoph (ok), 20-Май-15, 12:55 
SIMD? Нет, не слашал, да?
Ответить | Правка | Наверх | Cообщить модератору

22. "asmttpd - http-сервер на ассемблере"  +10 +/
Сообщение от Andrey Mitrofanov (?), 20-Май-15, 13:09 
> SIMD? Нет, не слашал, да?

Да! Оно улучшит веб-сервер. Кардинально.

ps. Не сЛОШал.

Ответить | Правка | Наверх | Cообщить модератору

107. "asmttpd - http-сервер на ассемблере"  –3 +/
Сообщение от bircoph (ok), 21-Май-15, 04:57 
>> SIMD? Нет, не слашал, да?
> Да! Оно улучшит веб-сервер. Кардинально.

Без шуток, улучшит, кардинально. То же копирование памяти.
Просто нужно параллелизировать алгоритмы и данные. Это не всегда просто, чаще всего очень даже сложно, но выполнимо.

Ответить | Правка | Наверх | Cообщить модератору

26. "asmttpd - http-сервер на ассемблере"  +8 +/
Сообщение от Аноним (-), 20-Май-15, 13:25 
> SIMD? Нет, не слашал, да?

Вы не поверите, но современные компиляторы о нем тоже слышали.

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

42. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 20-Май-15, 14:05 
Но на asm'е больше шансов подогнать код так, что бы он уместился в L1-кеш процессора.
Ответить | Правка | Наверх | Cообщить модератору

49. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Анонимоус (?), 20-Май-15, 14:37 
Вообще и этим должен заниматься компилятор, если специально поставить такую задачу
Ответить | Правка | Наверх | Cообщить модератору

51. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от Mihail Zenkov (ok), 20-Май-15, 14:40 
Я имею виду разместить весь код приложения, как это делает memtest. На C это мало реально, ввиду раздутости библиотек.
Ответить | Правка | Наверх | Cообщить модератору

85. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от Аноним (-), 20-Май-15, 20:46 
> C это мало реально, ввиду раздутости библиотек.

Вот те раз, а мужики с -nostdlib то и не в курсе. В смысле, на си можно собрать даже boot loader какой-нибудь, где printf делать еще некуда, файловой системы - нет как класса, и вообще, есть только проц да кучка служебных регистров.

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

Ответить | Правка | Наверх | Cообщить модератору

97. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от Mihail Zenkov (ok), 20-Май-15, 23:16 
Да можно, я сам пишу на С под AVR. И на C++ можно, но реальность увы гораздо суровее. Посмотрите здесь обсуждение Qt-5.5 - программистов на C++ не волнуют не то что килобайты, но и мегабайты.
Ответить | Правка | Наверх | Cообщить модератору

101. "asmttpd - http-сервер на ассемблере"  +4 +/
Сообщение от Анончег (?), 21-Май-15, 01:13 
> Да можно, я сам пишу на С под AVR. И на C++
> можно, но реальность увы гораздо суровее. Посмотрите здесь обсуждение Qt-5.5 -
> программистов на C++ не волнуют не то что килобайты, но и
> мегабайты.

Загляни в новость про жабу, там и единиц измерения-то таких не знают, там с гигабайта всё только начинается.

Ответить | Правка | Наверх | Cообщить модератору

113. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Canis Dirus Leidy (?), 21-Май-15, 08:18 
>Да можно, я сам пишу на С под AVR. И на C++ можно, но реальность увы гораздо суровее. Посмотрите здесь обсуждение Qt-5.5

Я сам вожу грузы на „Газели“, но реальность увы горзадо суровее. Посмотрите здесь обсуждение „Белаза-75710”…

Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

123. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 21-Май-15, 12:43 
> Я сам вожу грузы на „Газели“, но реальность увы горзадо суровее. Посмотрите
> здесь обсуждение „Белаза-75710”…

Вот в теме про Qt-5.5 и предлагают использовать Белаз для перевозки одного мешка цемента ...

Ответить | Правка | Наверх | Cообщить модератору

131. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 21-Май-15, 18:28 
> Вот в теме про Qt-5.5 и предлагают использовать Белаз для перевозки одного
> мешка цемента ...

А вы (ну так, глядя на ваши девайсы на тиньках) обычно это делаете так:
- Знаете, парни, все эти ваши газели и тем более белазы - сложные и ненадежные! Вон там сколько всего сломаться может, а запчасти стоят дофига, все дела.
- Что вы предлагаете?
- Ну нам вроде весь мешок прямо сейчас не требуется. Прямо сейчас надо только вон ту дырку заложить. Ведра хватит! Ведро - надежное и дешевое, газели и белазы пролетают!
(проходит полдня корячений с тасканием тяжелого ведра через полгорода)
- Ну вот, все дырка заложена. Задача решена!
- Погодите, но тут еще две дырки?
- А следующую дырку мы как-нибудь потом заложим. Сейчас что-то задолбались.

Ответить | Правка | Наверх | Cообщить модератору

140. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 21-Май-15, 21:26 
> А вы (ну так, глядя на ваши девайсы на тиньках) обычно это
> делаете так:

Не понял, к чему ваши аналогии?

Приведенные мной примеры на attiny13 работают не первый год, их работой я доволен. Работают они все на 1.2MHz, сама же attiny13 может работать до 20MHz.

Ответить | Правка | Наверх | Cообщить модератору

119. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 21-Май-15, 09:40 
Ну так Qt любой версии, как бы, не ориентирована на 8-битные AVR совсем. Даже на STM32 без подключения внешней памяти не впихнуть.

Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

121. "asmttpd - http-сервер на ассемблере"  –1 +/
Сообщение от annnnnnnn (?), 21-Май-15, 10:37 
Реальность такова, что плюсовый код на порядок лучше оптимизирует.
Из последнего - это замена memset и memcpy на std::fill и std::copy.
В сишном варианте проверки выравнивания и размеров копирования выполняются в рантайме - в плюсовом - на этапе компиляции.
Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

132. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 21-Май-15, 18:32 
> Реальность такова, что плюсовый код на порядок лучше оптимизирует.

Лол. Может вы еще и с ассемблерными листингами и замерами производительности все это покажете, чтобы не быть голословным? :)

Ответить | Правка | Наверх | Cообщить модератору

145. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от annnnnnnn (?), 22-Май-15, 10:27 
800045a:    bf00          nop
800045c:    4a10          ldr    r2, [pc, #64]    ; (80004a0 <main+0x48>)
800045e:    2116          movs    r1, #22
8000460:    f5a2 5380     sub.w    r3, r2, #4096    ; 0x1000
8000464:    f843 1b04     str.w    r1, [r3], #4
8000468:    4293          cmp    r3, r2
800046a:    d1fb          bne.n    8000464 <main+0xc>
800046c:    bf00          nop

Между nop - это std::fill, например.

Ответить | Правка | Наверх | Cообщить модератору

143. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от XoRe (ok), 22-Май-15, 00:23 
> Реальность такова, что плюсовый код на порядок лучше оптимизирует.

Что, простите?

> Из последнего - это замена memset и memcpy на std::fill и std::copy.

Может у вас и <<, >> быстрее, чем read, write?

Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

135. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Влад (??), 21-Май-15, 18:40 
Ну и как тебе писать сложный алгоритм на ассемблере и на C под avr?
Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

142. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 21-Май-15, 21:36 
> Ну и как тебе писать сложный алгоритм на ассемблере и на C
> под avr?

http://www.opennet.ru/openforum/vsluhforumID3/102654.html#67


Ответить | Правка | Наверх | Cообщить модератору

125. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от z (??), 21-Май-15, 14:50 
Он этим занимается аж в 0.1% случаев, о таких вещах как cache pollution-aware вообще молчу
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

105. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от bircoph (ok), 21-Май-15, 04:53 
Сразу видно, что пишет человек с SIMD серьёзно не работавший.

Компиляторы, конечно, SIMD стараются применять, но отстают в успехе в разы, даже и использованием intrinsic функций. Главная проблема в том, что компилятору далеко не всегда возможно определить, где можно векторизовать код без потери в точности или скорости с учётом стоимости переключения контекста процессора между int и float.

Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

116. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Аноним (-), 21-Май-15, 09:34 
>переключения контекста процессора между int и float

Наверное, я отстал от жизни. Обработка типов int и float уже выполняются в разных процессах?

Ответить | Правка | Наверх | Cообщить модератору

127. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от bircoph (ok), 21-Май-15, 16:26 
> Наверное, я отстал от жизни. Обработка типов int и float уже выполняются в разных процессах?

Не "отстал", а никогда в неё и не входил. С момента появления FPU переключение между контекстом целочисленных операций и операций с плавающей запятой было и является весьма дорогим:
https://en.wikipedia.org/wiki/Context_switch#Performance

Между прочим, это главная причина того, что ядро целиком и полностью целочисленное (если нужны вещественные числа, используется fixed-point арифметика, а она реализована на целых числах), за исключением нескольких особых случаев:
http://yarchive.net/comp/linux/kernel_fp.html

Ответить | Правка | Наверх | Cообщить модератору

147. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Аноним (-), 22-Май-15, 13:45 
> Не "отстал", а никогда в неё и не входил. С момента появления FPU переключение между контекстом целочисленных операций и операций с плавающей запятой было и является весьма дорогим

Уважаемый, вы упоролись. Пенальти за переход между целочисленным режимом и FP был во времена MMX, когда для целочисленных значений использовались регистры FPU. С тех пор, как появились SSE/SSE2, про MMX и, собственно, сам FPU все забыли как про страшный сон.

Переключение контекста - это вообще из области многопоточности/многозадачности.

Ответить | Правка | Наверх | Cообщить модератору

152. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 22-Май-15, 17:43 
> Уважаемый, вы упоролись. Пенальти за переход между целочисленным режимом и FP был
> во времена MMX, когда для целочисленных значений использовались регистры FPU. С
> тех пор, как появились SSE/SSE2, про MMX и, собственно, сам FPU
> все забыли как про страшный сон.

Не все - gcc по-умолчанию использует сопроцессор для 32 битных систем. Есть у него и хитрый режим sse+387 - что удваивает количество регистров.

> Переключение контекста - это вообще из области многопоточности/многозадачности.

Насколько я понимаю, речь идет о том, что при переключении потока/задачи придется регистры сопроцессор сохранять/восстанавливать.

Ответить | Правка | Наверх | Cообщить модератору

153. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 22-Май-15, 18:02 
> Не все - gcc по-умолчанию использует сопроцессор для 32 битных систем. Есть у него и хитрый режим sse+387 - что удваивает количество регистров.

Уже нет. Начиная с 4.9 SSE используется по умолчанию и для 32-битных приложений.

https://gcc.gnu.org/gcc-4.9/changes.html

Разве что вы собираете код для CPU без SSE или целенаправленно хотите использовать FPU ради повышенной точности.

> Насколько я понимаю, речь идет о том, что при переключении потока/задачи придется регистры сопроцессор сохранять/восстанавливать.

Вот это действительно имеет место. Но не надо путать теплое с мягким - на этапе исполнения кода никаких "переключений контекста" нет.

Ответить | Правка | Наверх | Cообщить модератору

154. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Mihail Zenkov (ok), 22-Май-15, 18:27 
> Уже нет. Начиная с 4.9 SSE используется по умолчанию и для 32-битных
> приложений.
> https://gcc.gnu.org/gcc-4.9/changes.html

Не нашел. man gcc (4.9.2) утверждает обратное. Если вы про -ffast-math, то даже я, любитель собрать систему с -O3, использую -ffast-math только при экспериментах, да и то на отдельных пакетах - слишком много от этой опции проблем.

Ответить | Правка | Наверх | Cообщить модератору

80. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Нанобот (ok), 20-Май-15, 20:03 
>SIMD? Нет, не слашал, да?

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

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

106. "asmttpd - http-сервер на ассемблере"  –1 +/
Сообщение от bircoph (ok), 21-Май-15, 04:54 
>>SIMD? Нет, не слашал, да?
> вот и разработчики не слышали. или слышали, но у них не хватило
> наркоты, чтобы придумать, как это можно использовать для обработки http-трафика

Зачем наркота? Тот же SSE давно используется в столь далёких от паралельных вычислений вещах, как memcpy, см. код glibc.

Ответить | Правка | Наверх | Cообщить модератору

24. "asmttpd - http-сервер на ассемблере"  +3 +/
Сообщение от Аноним (-), 20-Май-15, 13:23 
> Хорошо написанный код на СИ в общем случае не улучшишь с помощью ассемблера.

То-то все кодеки, либы шифрования, turbojpeg и прочие - вставки на асме пишут для ускорения.

Потому что как там сгенерит код сишный компилер - бабушка надвое сказала. И когда он вывалит какое-то жуткое месиво в тугом цикле, "потому что кодогенератор так решил" - знаешь, кодек с асмовыми вставками, где этот цикл вылизан покомандно живым человеком - может оказаться в 2-3 раза быстрее. Просто потому что в тугом цикле - в 2 раза меньше команд. Человек то в отличие от компилера может и подраспереться в одной локальной местности, оптимизнув по максимуму. Но писать мег кода на асме - бесполезно :). Можно запросто продуть компилятору в оптимизации использования регистров и проч.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

27. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от михаил (?), 20-Май-15, 13:27 
http://www.opennet.ru/opennews/art.shtml?num=36551
Ответить | Правка | Наверх | Cообщить модератору

29. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от михаил (?), 20-Май-15, 13:27 
> http://www.opennet.ru/opennews/art.shtml?num=36551

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

Ответить | Правка | Наверх | Cообщить модератору

83. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 20-Май-15, 20:43 
>  Большая часть ассемблерных вставок малозначительна

Это тот случай когда "мал золотник, да дорог". Нет смысла ускорять код в который ничего особо и не упиралось, поэтому переписать всю ОС или программу на асм как колибри или менуэт - довольно глупо.

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

> и не создаёт должного увеличения производительности.

А я вот мерял как-то чисто сишные версии vs C+asm вставки в случае кодека - разница была очень даже. И я бы не хотел пользоваться чисто сишной версией кодека при доступности asm-optimized, разница может быть в пару раз запросто. А это меньше шума от вентиля на мощном проце, а на слабом - больше разрешение которое прожуется без выпадения кадров.

> другими узкими местами.

Вот в кодеках например асмовые вставки сделаны в самых горячих местах. Что и ускоряет все буквально в разы. Ну разумеется всякий glue code вызываемый сильно иногда - никто в здравом уме на асме писать не будет, потому что эффекта около ноля, а возни много.

Ответить | Правка | Наверх | Cообщить модератору

37. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от Andrey Mitrofanov (?), 20-Май-15, 13:49 
> То-то все кодеки, либы шифрования, turbojpeg и прочие - вставки на асме
> пишут для ускорения.

Как видим, весь код на асме пишут для замедления.

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

56. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от ram_scan (?), 20-Май-15, 15:24 
> Как видим, весь код на асме пишут для замедления.

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

Если его на сях переписать будет еще тупее по производительности.


Ответить | Правка | Наверх | Cообщить модератору

88. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Andrey Mitrofanov (?), 20-Май-15, 20:50 
>> Как видим, весь код на асме пишут для замедления.
>что они - тормозная блоатварь.

Про блоат это ты принёс. Беспокоит размер? Сравнивал 10DVD любой из 10 архитектур Debian-а со своими ассемберными пипирками и аж задохнулся?? Твои страдания >>>-все-видят->

> Сотни батхерта обеспечены :)

Ответить | Правка | Наверх | Cообщить модератору

94. "asmttpd - http-сервер на ассемблере"  –2 +/
Сообщение от Аноним (-), 20-Май-15, 21:02 
> Про блоат это ты принёс.

Я всего лишь придумал как оптимизировать наброс. Троллить ассемблерщиков неоптимальными набросами - не пройдет. Они во всем оптимизацию любят.

Ответить | Правка | Наверх | Cообщить модератору

50. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от iPony (?), 20-Май-15, 14:39 
Да, так я и написал "в общем случае".
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

78. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Омномним (?), 20-Май-15, 18:31 
Кодеки, шифрование, обработка изображений - это "числодробилки". Ассемблерные вставки там - это чёрные ящики, получающие буфер с данными на входе и выдающие буфер на выходе, это функции-аутисты, проделывающие большой объем вычислений, никак не общаясь с окружением.
А что такое http-сервер? Это жонглирование буферами памяти между вызовами API-шных функций работы с сетью и диском. Ну, парсер строк заголовков еще можно написать на асме, если уж руки чешутся. Но весь червер на асме это чистое рукоблудие.
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

86. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 20-Май-15, 20:48 
Ух ты, я вызвал приступы капитанинга. Любо-дорого смотреть, Капитаны на опеннете сегодня качественные :)
Ответить | Правка | Наверх | Cообщить модератору

108. "asmttpd - http-сервер на ассемблере"  –3 +/
Сообщение от bircoph (ok), 21-Май-15, 04:59 
>[оверквотинг удален]
> пишут для ускорения.
> Потому что как там сгенерит код сишный компилер - бабушка надвое сказала.
> И когда он вывалит какое-то жуткое месиво в тугом цикле, "потому
> что кодогенератор так решил" - знаешь, кодек с асмовыми вставками, где
> этот цикл вылизан покомандно живым человеком - может оказаться в 2-3
> раза быстрее. Просто потому что в тугом цикле - в 2
> раза меньше команд. Человек то в отличие от компилера может и
> подраспереться в одной локальной местности, оптимизнув по максимуму. Но писать мег
> кода на асме - бесполезно :). Можно запросто продуть компилятору в
> оптимизации использования регистров и проч.

С использованием векторных инструкций не в 2-3 раза, а в 20-30 раз (для конкретного цикла или небольшого куска кода), что в целом даёт 2-5 раз уже для всей программы.

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

32. "asmttpd - http-сервер на ассемблере"  +1 +/
Сообщение от Kroz (??), 20-Май-15, 13:36 
> Прям чудеса

Ожидаемо. Просто алгоритмы оптимизации кода в компиляторах достаточно развиты. Одна моя подделка с -O2 работала раза в 4 быстрее по сравнению с -O0.

Относительно проекта впечатления противоречивые, но склоняюсь к позитиву. С одной стороны "Зачем?", а с другой - может наконец-то девелоперы начнут ртбращать внимание а ресурсы, которые потребляет их программы, а то софт с учётом апгрейда железа тормозит точно также, как и 15лет назад.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

35. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Crazy Alex (ok), 20-Май-15, 13:47 
Да при чём здесь оптимизации. Просто на ассемблере несколько задолбаешься делать сложную высокоуровневую логику, нужную для эффективной реализации чего-то большого. Если ты не Кнут, конечно. А то, что высокоуровневые оптимизации дают на порядки больший эффект, чем вылизывание инструкций - не секрет ни разу.

Лишнее подтверждение этому - объём бинарника. 6к - даже для ассемблера не ахти что, тем более на x86_64. То есть там наверняка всё внутри реализовано самым тривиальным образом.

Ответить | Правка | Наверх | Cообщить модератору

65. "asmttpd - http-сервер на ассемблере"  –1 +/
Сообщение от BratSinot (ok), 20-Май-15, 16:13 
> Лишнее подтверждение этому - объём бинарника. 6к - даже для ассемблера не ахти что

Это как-бы мало, у остальных они за собой еще libc / stdc++ потянут, а тут только ядро нужно.

Ответить | Правка | Наверх | Cообщить модератору

68. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Crazy Alex (ok), 20-Май-15, 16:48 
Это не просто мало - это катастрофически мало для того, чтобы реализовать приличные структуры данных и алгоритмику
Ответить | Правка | Наверх | Cообщить модератору

74. "asmttpd - http-сервер на ассемблере"  +2 +/
Сообщение от rshadow (ok), 20-Май-15, 17:46 
> а то софт с учётом апгрейда железа тормозит точно также, как и 15лет назад

Это все сказки. Вы просто не замечаете возросших потребностей. Один графический тулкит с тенями, анимациями нажатий и т.д. чего стоит.
Что 15 лет назад по большей части никто не оптимизировал, что сейчас. Ситуация одинаковая.

Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

39. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 20-Май-15, 13:57 
Никто не уловил сарказм?
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

54. "asmttpd - http-сервер на ассемблере"  +/
Сообщение от Аноним (-), 20-Май-15, 15:16 
чудеса будут, если он проживет столько, сколько апач например и все равно будет сливать по скорости. в данный момент сравнение некорректно
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру