Если вы про выделение памяти на стеке, то это далеко не универсальный подход… а) стековый объект нужно выделять явно б) компилятор (насколько я знаю) не умеет оптимизировать new в стековый объект и в) стековый объект имеет фиксированный скоуп и время жизни, что часто полезно, но ограничивает область применения
Вообще дает, в некоторых случаях. Разумеется, не на специально оптимизированном коде, а на коде общего назначения. Примеры:
Java умеет оптимизировать код "оптимистично" — например, вместо проверки на null вставить SEH, который при вылете сгенерит правильный NullPointerException. И приведет к перекомпиляции этого куска кода уже с проверкой. Либо заменять виртуальный вызов на прямой, даже если в приложении существуют два разных класса-потомка.
выделение памяти в джаве не требует синхронизации и работает намного быстрее сишных аллокаторов
Просто качественный код на С/С++ почти всегда быстрее качественного кода на Java. Но и недооценивать джавовый оптимизатор не нужно — разница частенько измеряется в единицах процентов.
Application server-а — да, согласен, геморрой еще тот. К счастью, современные приложения пишут stand-alone — т.е. shell-скрипт запуска + папочка lib с джарниками. Либо деплоят образы Docker — с ними вообще минимум проблем.
Не уверен, что приложения на С удобнее деплоить, чем джавовые. Там же своих приколов хватает с версиями библиотек, "немного другим ядром" ОС и все такое.
Да даже если не оперировать толпами программистов. Один программист на сях напишет программу, которую силами любого кол-ва программистов в машинном коде написать невозможно.
Вот да, от крякми ожидается какая-то изюминка, делающая поиск решения менее тривиальным. Многопоточность, таймеры, ВМ, использование API с callback-ами, динамический код, редкие инструкции ассемблера. Да хотя бы цикл через add esp, 4; ret
7) Говорите о преимуществах продукта, а не о его свойствах
Ненавижу. Быть может, это хороший совет для электронных писем, но интернет набит обещающими небо в алмазах сайтами, на которых очень тяжело найти хоть какую-то конкретику.
Ох уж эти теоретики. Все это уже было — и "прозрачные для приложения сетевые вызовы", и "автогенерация сетевого API по коду приложения", и "передача кода по сети". Красивые идеи, промышленные реализации — все они провалились.
Такого рода система требует упор на инкапсуляцию и обратную совместимость по API и данным. Говоря конкретно:
сетевое API должно быть контролируемым, чтобы обеспечить обратную совместимость. Предлагаемый подход вносит слишком много факторов, влияющих на API
то, что локальные вызовы и удаленные — это одно и то же — опасное заблуждение. Удаленные вызовы имеют свойство выполняться произвольное время, не выполняться вообще, требовать повтор запроса, при этом клиент не может знать, выполнен ли предыдущий или нет. Насколько я в курсе, пока никто не придумал унифицированную обработку ошибок, пригодную и для локальных, и для удаленных вызовов.
передача кода по сети значительно усложняет соблюдение обратной совместимости. Никто же не знает, что этот код, пришедший от клиента, будет вызывать?
Сетевые запросы имеют свойство "застревать" и доходить до получателя сильно позже того, как их отправили. Основные причины — использование очередей сообщений, хитрые механизмы передоставки, CQRS. Так что подход "сначала шлем модель, потом упакованные данные" — не универсален.
Сложность. HTTP как основной протокол передачи данных прижился благодаря исключительной простоте, гибкости и расширяемости — его смогли приспособить для решения очень многих задач. Описанная в статье "универсальная платформа" может и не оказаться настолько расширяемой либо может оказаться слишком сложной для понимания массами — и что тогда?
За amdgpu-pro — отдельное спасибо. Я думал, что amd просто забросили разработку fglrx и оставили линуксоидов с опнсорсным radeon. По теме — в том же Windows нормально написанные драйвера становятся несовместимыми только при радикальном изменении ядра ОС.
Но дело даже не в этом — автору wget-а можно порекомендовать попробовать внести несовместимое изменение в собственную утилиту, а уже потом рекомендовать такое поведение другим.
Дикость какая-то. Обратная совместимость софта — это основа бизнеса Майкрософт и, не побоюсь этого сказать, одна из основных причин коммерческого успеха Windows. Многие программы, написанные для win95, до сих пор запускаются и работают. Это вам не линукс, где после выхода новой убунты счастливые владельцы видеокарт AMD остались без качественных драйверов, т.к. разработчики иксов изволили поломать обратную совместимость при выходе новой версии.
Любой цвет: элемент имеет цвет
Другой цвет: элемент отличается от другого элемента
Серый: что-то сломано
Красный: дизайнер ненавидит вас и хочет разозлить Альфа-банк
Если вы про выделение памяти на стеке, то это далеко не универсальный подход… а) стековый объект нужно выделять явно б) компилятор (насколько я знаю) не умеет оптимизировать new в стековый объект и в) стековый объект имеет фиксированный скоуп и время жизни, что часто полезно, но ограничивает область применения
Вообще дает, в некоторых случаях. Разумеется, не на специально оптимизированном коде, а на коде общего назначения. Примеры:
Java позволяет писать качественные приложения быстро. И Java позволяет при приложении некоторых усилий писать быстрые приложения. За это ее и любят.
Просто качественный код на С/С++ почти всегда быстрее качественного кода на Java. Но и недооценивать джавовый оптимизатор не нужно — разница частенько измеряется в единицах процентов.
Application server-а — да, согласен, геморрой еще тот. К счастью, современные приложения пишут stand-alone — т.е. shell-скрипт запуска + папочка lib с джарниками. Либо деплоят образы Docker — с ними вообще минимум проблем.
Не уверен, что приложения на С удобнее деплоить, чем джавовые. Там же своих приколов хватает с версиями библиотек, "немного другим ядром" ОС и все такое.
Вконтакте использует С и PHP.
Да даже если не оперировать толпами программистов. Один программист на сях напишет программу, которую силами любого кол-ва программистов в машинном коде написать невозможно.
Вот да, от крякми ожидается какая-то изюминка, делающая поиск решения менее тривиальным. Многопоточность, таймеры, ВМ, использование API с callback-ами, динамический код, редкие инструкции ассемблера. Да хотя бы цикл через add esp, 4; ret
а) имелось в виду взаимодействие сервер-сервер.
б) валить все недостатки архитектуры на экспериментальность стека позиция удобная, но сомнительная.
Вообще если натянуть эту статью на архитектуру клиент-сервер, то она начинает обретать смысл. Но замахиваться на большее не стоит.
Latency какой получился при обращении к лямбде?
Ненавижу. Быть может, это хороший совет для электронных писем, но интернет набит обещающими небо в алмазах сайтами, на которых очень тяжело найти хоть какую-то конкретику.
Ох уж эти теоретики. Все это уже было — и "прозрачные для приложения сетевые вызовы", и "автогенерация сетевого API по коду приложения", и "передача кода по сети". Красивые идеи, промышленные реализации — все они провалились.
Такого рода система требует упор на инкапсуляцию и обратную совместимость по API и данным. Говоря конкретно:
За amdgpu-pro — отдельное спасибо. Я думал, что amd просто забросили разработку fglrx и оставили линуксоидов с опнсорсным radeon. По теме — в том же Windows нормально написанные драйвера становятся несовместимыми только при радикальном изменении ядра ОС.
Но дело даже не в этом — автору wget-а можно порекомендовать попробовать внести несовместимое изменение в собственную утилиту, а уже потом рекомендовать такое поведение другим.
Дикость какая-то. Обратная совместимость софта — это основа бизнеса Майкрософт и, не побоюсь этого сказать, одна из основных причин коммерческого успеха Windows. Многие программы, написанные для win95, до сих пор запускаются и работают. Это вам не линукс, где после выхода новой убунты счастливые владельцы видеокарт AMD остались без качественных драйверов, т.к. разработчики иксов изволили поломать обратную совместимость при выходе новой версии.
Решение, которое мы используем — это собственные обертки поверх slf4j а-ля
Помогает сильно упростить анализ логов.
Это к вопросу об абсолютности полезных советов
Я сидел и разбирался, как он работает.
Вконтакт очень хорошо оптимизирован, так что это скорее претензии к гуглевому PageSpeed