Здравствуйте, alexzzzz, Вы писали:
A>>>1. Если участку программы нужна скорость, тут и профайлером смотрят, и бенчмарки гоняют-сравнивают, и используют любые доступные средства — цель оправдывает. I>>Код должен быть относительно читабельным после оптимизаций. В противном случае его выбросят после долгого геморроя с майнтенансом.
A>Выбросят, участок программы снова станет в 10 раз медленнее, и кто-то за это получит по шапке.
Не получит, потому что от геморроя с майнтенансом устают очень быстро и идут на компромиссы по перформансу.
Всегда должен быть баланс между профитом от оптимизаций и убытком от майнтенанса.
Если в оптимизированый код умеет фиксить только один человек, то очень быстро вся команда станет зависеть от него одного.
Проще согласиться на ту оптимизацию, которая более-менее читабельна и может майнтейниться любым человеком из команды.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, alexzzzz, Вы писали:
A>>>>1. Если участку программы нужна скорость, тут и профайлером смотрят, и бенчмарки гоняют-сравнивают, и используют любые доступные средства — цель оправдывает. I>>>Код должен быть относительно читабельным после оптимизаций. В противном случае его выбросят после долгого геморроя с майнтенансом. A>>Выбросят, участок программы снова станет в 10 раз медленнее, и кто-то за это получит по шапке. I>Не получит, потому что от геморроя с майнтенансом устают очень быстро и идут на компромиссы по перформансу.
Мы сейчас рассуждаем о гипотетическом коде, который гипотетически был как-то сильно оптимизирован и какая-то гипотетическая команда программистов решает, как с этим кодом поступить. При такой посылке можно договориться до чего угодно.
Здравствуйте, alexzzzz, Вы писали:
I>>Не получит, потому что от геморроя с майнтенансом устают очень быстро и идут на компромиссы по перформансу.
A>Мы сейчас рассуждаем о гипотетическом коде, который гипотетически был как-то сильно оптимизирован и какая-то гипотетическая команда программистов решает, как с этим кодом поступить. При такой посылке можно договориться до чего угодно.
Я такое наблюдал и вживую, и со стороны. Оптимизации это всегда усложнения. Соответственно стоимость поддержки растет. Отсюда и выражение про "premature optimisation". Т.е. выше уровня поддерживаемости не прыгнешь, это и есть потолок для оптимизаций, а вовсе не сам эффект.
Здравствуйте, alex_public, Вы писали:
_>Оу, т.е. ты кроме всего прочего ещё и ничего не понимаешь в тестах производительности... Среднее значит, понятненько...
Если у тебя есть идеи получше — выкладывай. Не надо ограничиваться важным надуванием щек.
Здравствуйте, Ikemefula, Вы писали:
I>Браво, ты предлагаешь сравнить гуглошит с наколеночной поделкой ?
Я предлагаю сравнить аналогичный код для C# и JS, если уж ты так решил упереться рогом и не обращать внимания на совершенно очевидную огромную разницу в отжоре памяти веб- и обычных приложений.
Это при условии, что ты не будешь юлить и врать про цифры
Здравствуйте, Ikemefula, Вы писали:
I>И как же ты его запустил ?
А какие есть варианты, кроме очевидного?
I> Я так и думал. Хорошо хоть не интернет эксплорер. I>Запусти его в хроме последнем, в ноде 6м или 8м. Ты в курсе, что разные рантаймы имеют сильно разный перформанс ? Вот скажем MS Edge вообще 20 секунд сортирует.
Ну всё, началось кручение хвостом. Там не сравнивай, здесь сравнивай.
Здравствуйте, alexzzzz, Вы писали:
A>Неважно. Если в JS нет указателей, к примеру, это его проблемы. Ты ведь не будешь писать код на C#, постоянно вспоминая, что в JS нет указателей? Если в JS нет quick sort (может и есть, я не знаю), то пусть тот, кто пишет на JS, сам делает свою реализацию.
Встроенная реализация может быть абсолютно разной. Может, там вообще реализация на ассемблере, которая встроена в рантайм. И чего ты добьешься, сравнивая ее с реализацией на ЯВУ?
Здравствуйте, CoderMonkey, Вы писали:
I>>И как же ты его запустил ?
CM>А какие есть варианты, кроме очевидного?
Пудозреваю, ты решил будто я случайно нашел в инете файлик, точь-в-точь как твой да всего лишь с одной ошибкой.
I>> Я так и думал. Хорошо хоть не интернет эксплорер. I>>Запусти его в хроме последнем, в ноде 6м или 8м. Ты в курсе, что разные рантаймы имеют сильно разный перформанс ? Вот скажем MS Edge вообще 20 секунд сортирует.
CM>Ну всё, началось кручение хвостом. Там не сравнивай, здесь сравнивай.
Пудозреваю, ты даже не догоняешь, что на разном железе-софте результаты всегда разные. Хочешь получить те цифры, что у меня — есть только один вариант.
Ну а если тебе говном покидаться — давай, у тебя похоже запасец нерастраченый.
Здравствуйте, CoderMonkey, Вы писали:
I>>Браво, ты предлагаешь сравнить гуглошит с наколеночной поделкой ?
CM>Я предлагаю сравнить аналогичный код для C# и JS, если уж ты так решил упереться рогом и не обращать внимания на совершенно очевидную огромную разницу в отжоре памяти веб- и обычных приложений. CM>Это при условии, что ты не будешь юлить и врать про цифры
Что значит "аналогичный" ? Ты собираешься на шарпе написать полнофункциональный аналог гуглошита ? Идёт. Возьмем какой ёмкий докуменик, скажем, для рассчета всякой механики и тд, да посмотрим.
Если по фичам твой аналог не вытянет — память незачем сравнивать.
Если ты хочешь просто грид показать на шарпе, то на JS такое пишется примерно в 30 строчек, на форуме есть пример.
Ну и про память расскажи, что же будем сравнивать — всю память включая код или только выборочно.
Здравствуйте, Ikemefula, Вы писали:
I>Я такое наблюдал и вживую, и со стороны. Оптимизации это всегда усложнения. Соответственно стоимость поддержки растет. Отсюда и выражение про "premature optimisation". Т.е. выше уровня поддерживаемости не прыгнешь, это и есть потолок для оптимизаций, а вовсе не сам эффект.
"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."
Будет надо — прыгнешь. На самый жуткий хардкор повесишь табличку "Не влезай — убьёт!", обернёшь каким-нибудь более-менее пристойным интерфейсом и обвесишь по периметру тестами.
Здравствуйте, CoderMonkey, Вы писали:
A>>Неважно. Если в JS нет указателей, к примеру, это его проблемы. Ты ведь не будешь писать код на C#, постоянно вспоминая, что в JS нет указателей? Если в JS нет quick sort (может и есть, я не знаю), то пусть тот, кто пишет на JS, сам делает свою реализацию.
CM>Встроенная реализация может быть абсолютно разной. Может, там вообще реализация на ассемблере, которая встроена в рантайм. И чего ты добьешься, сравнивая ее с реализацией на ЯВУ?
Я сравню скорость получения желаемого результата на разных языках. Польза очевидна — на каком языке задача решается быстрее, тот и подходит лучше для решения похожих задач, когда скорость важна. Когда скорость не важна, ничего сравнивать не нужно, и все наши наши изыскания в этой теме лишены смысла.
Если подгонять реализации решения задачи на разных языках друг под друга и потом их сравнивать, то пользы от такого сравнения я уже не вижу. Проблемы две, принципиальная и непринципиальная:
1. В реальном проекте такой код никто писать не будет. Подгонять реализацию на C# под гипотетическую реализацию того же самого на JS — зачем такое может понадобиться практически? Или ты выбрал C# и пишешь на нём, потому что он лучше подходит под задачу; или ты пишешь на JS, потому что он лучше подошёл. И естественно ты пишешь на языке X в стиле языка X с использованием любых доступных в языке X средств. Если это вдруг не так, то непонятно, какого хрена был выбран X, а не Y.
Как определить, какой из языков лучше подходит для решения задачи? Решить её (или её упрощённый вариант) средствами этих языков и сравнить. Что я и делаю.
2. Реализации одного и того же на разных языках всегда будут отличаться. Как ты заметил, встроенная реализация чего-угодно может быть абсолютно разной. Например, в JS нет разделения чисел на целые и дробные. Всё, приехали. Не писать же из-за этого в C# такую хрень: for (double i = 0; i < 5.0; i++). В JS выхода нет, а в C# ToString от целого и ToString от дабла — две большие разницы.
Здравствуйте, alexzzzz, Вы писали:
I>>Я такое наблюдал и вживую, и со стороны. Оптимизации это всегда усложнения. Соответственно стоимость поддержки растет. Отсюда и выражение про "premature optimisation". Т.е. выше уровня поддерживаемости не прыгнешь, это и есть потолок для оптимизаций, а вовсе не сам эффект.
A>
"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."
A>Будет надо — прыгнешь. На самый жуткий хардкор повесишь табличку "Не влезай — убьёт!", обернёшь каким-нибудь более-менее пристойным интерфейсом и обвесишь по периметру тестами.
Ты почему то процитировал по английски то, что я сказал тебе по русски. Но вывод сделал свой собственный. Так прямо и вижу: "Будем выпускать версии в два раза реже без важных фич, но обеспечим перформанс любой ценой"
Те 3%, если их можно отгородить, то это и есть то самое условие, что я говорю — возможность майнтенанса. В том числе это возможность изолировать рисковые места. И ты можешь оптимизировать только до тех пор, пока есть такая возможность. Дальше тебя уже и спрашивать не будут — выбросят нахрен проект и будут пилить на другом языке, архитектуре и тд.
Здравствуйте, Ikemefula, Вы писали:
I>Что значит "аналогичный" ? Ты собираешься на шарпе написать полнофункциональный аналог гуглошита ? Идёт. Возьмем какой ёмкий докуменик, скажем, для рассчета всякой механики и тд, да посмотрим.
Аналогичный между C# и JS. Слишком сложно для тебя?
I>Ну и про память расскажи, что же будем сравнивать — всю память включая код или только выборочно.
Здравствуйте, Ikemefula, Вы писали:
I>Пудозреваю, ты решил будто я случайно нашел в инете файлик, точь-в-точь как твой да всего лишь с одной ошибкой.
Твой "ход мыслей" ушел куда-то совсем в неведомые глубины.
Ну так что, какие есть варианты запуска, кроме очевидного?
I>Пудозреваю, ты даже не догоняешь, что на разном железе-софте результаты всегда разные.
На самом деле, характеристики железа сейчас различаются минимально. Даже между десктопами и ноутбуками, кроме совсем убогих.
Кроме этого, разница в железе не объясняет, почему у тебя разница в разные стороны, и при этом — в те стороны, которые тебе выгодны .
I>Хочешь получить те цифры, что у меня — есть только один вариант.
Не хочу. Хочешь доказать, что твои цифры не высосаны из пальца — доказывай.
Здравствуйте, alexzzzz, Вы писали:
A>Я сравню скорость получения желаемого результата на разных языках. Польза очевидна — на каком языке задача решается быстрее, тот и подходит лучше для решения похожих задач, когда скорость важна.
"Решается" как? Быстрее написать прототип? Быстрее написать полноценный релиз? Быстрее искать и фиксить баги?
A>Если подгонять реализации решения задачи на разных языках друг под друга и потом их сравнивать, то пользы от такого сравнения я уже не вижу.
Можно и не подгонять. Но тогда для небольшого бенчмарка слишком велика вероятность, что одна мелкая оптимизация очень сильно исказит результат — в случае с встроенной сортировкой, например. А писать большой и объемистый бенчмарк — долго и сложно.
Так что, проще всё же взять и сравнить по возможности сравнимое.
Здравствуйте, CoderMonkey, Вы писали:
I>>Пудозреваю, ты решил будто я случайно нашел в инете файлик, точь-в-точь как твой да всего лишь с одной ошибкой.
CM>Твой "ход мыслей" ушел куда-то совсем в неведомые глубины. CM>Ну так что, какие есть варианты запуска, кроме очевидного?
Да как ни крути, у тебя всё ясно — я ничего не делал да всё наврал. Ты это повторяешь на каждом углу.
I>>Пудозреваю, ты даже не догоняешь, что на разном железе-софте результаты всегда разные.
CM>На самом деле, характеристики железа сейчас различаются минимально. Даже между десктопами и ноутбуками, кроме совсем убогих.
Во первых, это не так. i3, i5, i7 отличаются значительно, особенно, если они разных поколений.
Во вторых. Кроме того, частоту памяти никто не отменял — сортировка это проезд по памяти, а не булка с маслом.
Во третьих, ты до сих пор не осилил под нодом, скажем 0.6.11 или 0.8.5, запустить ?
CM>Кроме этого, разница в железе не объясняет, почему у тебя разница в разные стороны, и при этом — в те стороны, которые тебе выгодны .
Судя по твоему нытью ты вот сих пор не догадался сделать внятное сравнение с версией на CompareOrdinal
I>>Хочешь получить те цифры, что у меня — есть только один вариант. CM>Не хочу. Хочешь доказать, что твои цифры не высосаны из пальца — доказывай.
Во первых, на кой ляд ?
А во вторых — в любом случае ты скажешь "подстроил", "не то жээс", "фотошоп". Другого пока не видно.
Здравствуйте, CoderMonkey, Вы писали:
I>>Что значит "аналогичный" ? Ты собираешься на шарпе написать полнофункциональный аналог гуглошита ? Идёт. Возьмем какой ёмкий докуменик, скажем, для рассчета всякой механики и тд, да посмотрим.
CM>Аналогичный между C# и JS. Слишком сложно для тебя?
Непонятно, что ты в это вкладываешь. Функциональность, внешний вид, количество строчек кода ? Сначала ты взялся соревноваться с Excel и googlesheets. Ты передумал ?
I>>Ну и про память расскажи, что же будем сравнивать — всю память включая код или только выборочно.
CM>А с какого фига, собственно, "выборочно"?
Ну пока что ты напираешь именно на этот вариант, а то если всю память, включая код, то придется посмотреть, чего сколько мб у экселя в шаред библиотеках. И далеко не факт, что хром перевесит. В хроме слишком много своего написано, потому что он кроссплатформенный. А эксель целиком на АПИ виндовса, то есть, будут тонны мегабайт в шаред библиотеках.
И как ты это будешь сравнивать ? Изложи методику, а то судя по предыдущему "примеру" сортировки, ты вообще в замерах ничего не понимаешь.
Здравствуйте, Ikemefula, Вы писали:
I>Непонятно, что ты в это вкладываешь. Функциональность, внешний вид, количество строчек кода ?
Функциональность, естественно.
I>Сначала ты взялся соревноваться с Excel и googlesheets. Ты передумал ?
И не брался Какой ты все-таки унылый изворотливый казуист.
I>И как ты это будешь сравнивать ? Изложи методику, а то судя по предыдущему "примеру" сортировки, ты вообще в замерах ничего не понимаешь.
Здравствуйте, Ikemefula, Вы писали:
I>Да как ни крути, у тебя всё ясно — я ничего не делал да всё наврал. Ты это повторяешь на каждом углу.
Мои замеры показали диаметрально противоположный результат. Так что либо врут мои глаза, либо ты.
I>Во первых, это не так. i3, i5, i7 отличаются значительно, особенно, если они разных поколений. I>Во вторых. Кроме того, частоту памяти никто не отменял — сортировка это проезд по памяти, а не булка с маслом.
Не в разы. Если не считать совсем дешевые говно-ноутбуки или железо 15-летней давности, естественно.
I>Во третьих, ты до сих пор не осилил под нодом, скажем 0.6.11 или 0.8.5, запустить ?
Теперь уже под нодом, а не под хромом? Ты уж определись наконец.
Здравствуйте, CoderMonkey, Вы писали:
I>>Да как ни крути, у тебя всё ясно — я ничего не делал да всё наврал. Ты это повторяешь на каждом углу.
CM>Мои замеры показали диаметрально противоположный результат. Так что либо врут мои глаза, либо ты.
Разумеется, потому что ты в фоксе запускаешь. Чего ты хотел от вымирающей платформы ? В Интернет Эксплорере результат еще хуже будет.
I>>Во первых, это не так. i3, i5, i7 отличаются значительно, особенно, если они разных поколений. I>>Во вторых. Кроме того, частоту памяти никто не отменял — сортировка это проезд по памяти, а не булка с маслом.
CM>Не в разы. Если не считать совсем дешевые говно-ноутбуки или железо 15-летней давности, естественно.
Частота процессора, турбо-режим, частота памяти — все это дает слишком большое влияние.
I>>Во третьих, ты до сих пор не осилил под нодом, скажем 0.6.11 или 0.8.5, запустить ?
CM>Теперь уже под нодом, а не под хромом? Ты уж определись наконец.
Важно, что ты не пробовал ни того, ни другого, но перешел к обвинениям.