Здравствуйте, SaZ, Вы писали:
SaZ>В общем, меня завалили на вопросе: объясните почему сложность O(С*n) < O(n^2) где С — конастанта?
Потому, что при достаточно большом n ("n, стремящемся к бесконечности"), n^2 завсегда обгонит C*n ("всегда найдется такой n, что для любого числа, болешего или равного ему...").
Здравствуйте, σ, Вы писали:
aik>>Ну и какой смысл спрашивать вот этот вот кодинг раз за разом? Он же точно не будет целыми днями только этим и заниматься σ>Поэтому нужно спрашивать архитектуру высоконагруженного приложения! Ведь программисты точно целыми днями только этим и занимаются. По 3 высоконагруженных приложения в час выпекают в среднем.
где то разворачивают строки за деньги? и прочая олимпиада без остановки, со своевременной оплатой? что за компания? искренне любопытно.
Здравствуйте, σ, Вы писали:
aik>>Ну и какой смысл спрашивать вот этот вот кодинг раз за разом? Он же точно не будет целыми днями только этим и заниматься σ>Поэтому нужно спрашивать архитектуру высоконагруженного приложения! Ведь программисты точно целыми днями только этим и занимаются. По 3 высоконагруженных приложения в час выпекают в среднем.
Мне доставило, что этот кадр пишет "высоконагруженные приложения" пузырьком.
Тё>>Вот ты, хотя на шаблоны не мастурбируешь, а веришь в константу минимальную, перекрывающую алгоритмическую сложность. CC>Ох Артёмка, какой же ты иногда забавный в своём упорстве.
CC>Ну да, в теории логарифмическая сложность побивает линейную. Но нас то интересует практика, на конкретных интервалах n, а не стремящегося к бесконечности.
Если у тебя чисто конкретно 10 элементов, пузырёк тоже сойдёт.
CC>Потому инженерами алгоритмы для решения задачи выбираются из практических соображений этой конкретной задачи.
Ога, главное, чтоб как всегда не оказалось- на 10 элементах у программиста с овер 6000 ядер и 100555гб памяти никогда не торзомозило, и тут в продакшене опять.
CC>А вот такие вот теоретики как ты как раз и лепят всё на шаблонах, чтоб на все случаи жизни параметризовалось.
Я не пишу на плюсах уже весьма давно. А так да, всё параметризуется.
CC>Вот и выходит у них примерно как тут:
CC>Image: ml52dfe504.jpg
Самокритично.
Здравствуйте, smeeld, Вы писали:
S>Да вот нифига. С 10-ти лет решал задачки по математике, любил это дело, особенно матанализ. Но когда стал пытаться писать код, то стало понятно, что думать нужно по-другому. При написании кода режим мышления должен быть другим, больше писательским, чем математическим. Иначе код получается похожим на математические выкладки.
Не понятно, что такое писательский и математический режимы мышления. Лично мне математическое образование никогда не мешало писать код. И ничего из себя не приходилось вытравливать. Наоборот, иногда математика помогает, когда нужно какую-нибудь оценку сделать или доказать корректность алгоритма.
Здравствуйте, Тёмчик, Вы писали:
Тё>Да, но можно ведь убить производительность неаккуратной обвязкой. Как у автора статьи — море пафоса и квадратичная сложность на ровном месте. Особо доставляют плюсники конечно, те, кто верует в святаго C++ и шаблоны его, и считает алгоритмы ересью.
У меня на практике было, когда квадратичная сложность по скорости превосходила линейную при обработке картинок: нашлась аппаратная инструкция, которая умела 4 операции делать за один раз. Далее оказалось, что при квадратичном алгоритме идёт последовательное чтение данных из памяти и линейный алгоритм слился по скорости. Оптимизировать код тоже надо уметь, зачастую даёт выигрыш в разы и константа побеждает алгоритм.
Здравствуйте, Nuzhny, Вы писали:
N>У меня на практике было, когда квадратичная сложность по скорости превосходила линейную при обработке картинок: нашлась аппаратная инструкция, которая умела 4 операции делать за один раз. Далее оказалось, что при квадратичном алгоритме идёт последовательное чтение данных из памяти и линейный алгоритм слился по скорости. Оптимизировать код тоже надо уметь, зачастую даёт выигрыш в разы и константа побеждает алгоритм.
Согласен. Но это случайность же- могло также попасть инструкция и последовательное чтение на линейный алгоритм, и срыв кеша- на квадратичный. Cache locality это такая штука- если чел на ровном месте городит квадратичную, от куда ему знать про cache locality.
Здравствуйте, Тёмчик, Вы писали:
Тё>Согласен. Но это случайность же- могло также попасть инструкция и последовательное чтение на линейный алгоритм, и срыв кеша- на квадратичный. Cache locality это такая штука- если чел на ровном месте городит квадратичную, от куда ему знать про cache locality.
Не юли, Артёмка.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
Тё>>Согласен. Но это случайность же- могло также попасть инструкция и последовательное чтение на линейный алгоритм, и срыв кеша- на квадратичный. Cache locality это такая штука- если чел на ровном месте городит квадратичную, от куда ему знать про cache locality.
CC> CC>Не юли, Артёмка.
Мы не знаем, что там на самом деле было. А вот примеров, когда чувак с бекграундом в C++ , обращался в цикле к элементам связного списка по индексу, или глотал все исключения в цикле, у меня есть дюжина. Верующие в быстроту C++, они такие.
Здравствуйте, fmiracle, Вы писали:
F>C — константа, n — переменная. Какую бы огромную С ты заранее ни взял, всегда можно найти такое n, где C*n < n*n. Собственно при n = С+1 оно уже так.
Это в математике, в программировании n таки ограничено.
Здравствуйте, kaa.python, Вы писали:
KP>Комменты вообще огонь я считаю и реально театр абсурда. Каждый второй сводится к тому, что "я хотел бы в Яндекс, но как только захожу на Литкод, корона нестерпимо давить начинает".
Здравствуйте, Тёмчик, Вы писали:
Тё>глотал все исключения в цикле
Во-первых, какое отношение проглатывание исключений имеет к пенисометрии на лучшее понимание big-O?
Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Здравствуйте, so5team, Вы писали:
Тё>>глотал все исключения в цикле
S>Во-первых, какое отношение проглатывание исключений имеет к пенисометрии на лучшее понимание big-O?
S>Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Здравствуйте, Тёмчик, Вы писали:
S>>Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Тё>Не вызывать из деструктора бросающих методов.
Вот уж, воистину, когда кажется, что Тёмчик достиг дна и падать дальше некуда, он неожиданно начинает копать.
Тёмчик, сосредоточься, прочитай внимательно. Если что не понятно, переспроси, я постараюсь объяснить максимально подробно. Но задача максимально простая: в деструкторе нужно вызвать N бросающих исключения методов. Нужно.
А теперь, пожалуйста, ответь на оба поставленных вопроса, а именно:
Во-первых, какое отношение проглатывание исключений имеет к пенисометрии на лучшее понимание big-O?
Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Здравствуйте, so5team, Вы писали:
S>>>Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Тё>>Не вызывать из деструктора бросающих методов.
S>Вот уж, воистину, когда кажется, что Тёмчик достиг дна и падать дальше некуда, он неожиданно начинает копать.
Самокритично.
S> в деструкторе нужно вызвать N бросающих исключения методов. Нужно.
Ну это как сказать "нужно съесть миску говна. Нужно."
S>А теперь, пожалуйста, ответь на оба поставленных вопроса, а именно:
S>Во-первых, какое отношение проглатывание исключений имеет к пенисометрии на лучшее понимание big-O?
Какое отношение имеет поедание говна к пониманию bigO?
S>Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт?
Сделать какой-то коннекшен коллектор, в деструкторе отдавать этих конекшенов туда. Периодически вызывать к коннекшен коллектора метод sweep, который таки может бросать.
Здравствуйте, Тёмчик, Вы писали:
Тё>Ну это как сказать "нужно съесть миску говна. Нужно."
Нет, это как в ситуации: "у тебя в доме прорвало канализацию и нужно убрать говно. Нужно". Поскольку суть не в говне, а в том, что убирать нужно. Нравится это тебе или нет.
S>>Во-первых, какое отношение проглатывание исключений имеет к пенисометрии на лучшее понимание big-O? Тё>Какое отношение имеет поедание говна к пониманию bigO?
Это у тебя нужно спросить. Ты же приплел пример с проглатыванием исключений в разговор про понимание big-O.
Так что не суть важно что именно ты считаешь говном, вопрос в том, причем оно здесь?
Ответить сможешь или в очередной раз публично обосрешься?
S>>Во-вторых, что Тёмчик предложит делать в деструкторе класса, когда нужно вызвать close() для 100500 объектов connection, а этот close() бросающий? Есть какой-то другой рецепт? Тё>Сделать какой-то коннекшен коллектор, в деструкторе отдавать этих конекшенов туда. Периодически вызывать к коннекшен коллектора метод sweep, который таки может бросать.
Остается только повторить: вот уж, воистину, когда кажется, что Тёмчик достиг дна и падать дальше некуда, он неожиданно начинает копать.
Удивляет в 21-году эмоциональный отклик автора на continuous hiring в крупные компания, ... в очень крупные компании.
Друзья там так все устроенно, что процесс найма должен идти всегда, даже если вакансии закрыты. )
Поэтому оптимум процесса найма не важен, важено только наличие самого процесса. )
Качество тоже не важно, смогут работать любые дебылы, важен только процесс отбора текущих лучших (мгновенное состояние), поэтому в часности и не спрашивают ничего из предметного опыта )