это показуха, он не оптимизирует алгоритмы, глупый он ещё.
А если алгоритмы не оптимизирует - какой прок с него? Он Фибоначчи в таблицу не переведёт.
То есть ты забыл, как твой кривой алгоритм ускорили в n раз?
Тот самый, где размотало и заинлайнило внутренние уровни рекурсии.
И это максимум компилятора. Ты реально на это будешь опираться? А если я сейчас приведу пример алгоритма, который компилятор в тупую вот так и закомпилирует, и ничего там от самого алгоритма не оптимизирует? Что тогда?
Тогда у нас есть два варианта: компилятор, который может сделать лучше, чем ты написал. И ты, который написал, как мог.
Компилятор в ближайшем будущем никогда не сможет сделать лучше, первый вариант отпадает. Второй вариант остаётся, и это как раз про запуск Photoshop, это про архиваторы, это про всё остальное. На инструкции пофиг, на данные пофиг, ты придумай более быстрый алгоритм! Вот это куда важнее.
Отлично. А стартап-то выкидывать зачем, вот в чём вопрос.
И я ещё раз говорю, что он там не смог сделать таблицу. Он развернул рекурсию, да, но таблицу не сделал. Я сделаю таблицу, и переплюну все его старания. А всё почему? Потому что АЛГОРИТМ более быстрый. И даже если в моём коде получения данных с таблицы будет вместо mov eax, dword[arr+ecx*4] - push dword[arr+ecx*4] pop eax Это всё равно быстрее, даже если я наляпаю неадекватные инструкции. То есть, вот эта оптимизация инструкций никак не поможет. Думать надо над алгоритмами, а не над инструкциями.
Ура! Можно брать питон, думать над алгоритмами там, а потом переписывать на сишке!
Это был аргумент против оптимизации инструкций. Коль начал считать вот эти тики и хвастаться, что компилятор сделал SSE инструкции - тогда и стартап учитывай. А если нормально подойти к этому - то и ничего выкидывать не надо.
Или брать сишку, думать над алгоритмом там и переписывать на асм
А я с Python на ассемблер переписываю.
А мне в кайф сразу на асме писать.
Не, ну я тоже сразу пишу. Просто если есть какой-то алгоритм, о котором я ранее не слышал - то мне нужно кодоподобное объяснение, а синтаксис у Python намного лучше С, это чистый синтаксис прототипа. Его удобно на ассемблер переписывать.
С кодоподобным объяснением слишком легко, да и я люблю писать алгоритмы сам, переписывать скучно
Опять двадцать пять. У тебя там есть рисовалка графиков. Нарисуй график двух функций: k + 0.998 * x и 1.0 * x (k это стартап, он константный). Ну если ты в голове представить не можешь, придётся рисовать.
А и не надо идти по самому сложному пути. Тебе надо понять быстрый алгоритм и быстро его реализовать, или с бубном танцевать?
Танцевать с бубном, конечно, если бы я любил простые пути я бы не писал на ассемблере
Зачем тогда пишешь, если считаешь ассемблер сложным?
Я не считаю ассемблер сложным сейчас. Дорога до того, чтобы считать его простым, была очень сложной.
А представь тех, кто только на Python писать умеют, и решили выучить С.
Я это сегодня уже несколько раз повторил. Чем больше итераций, тем меньше тебя заботят константы, которые к итерациям не относятся.
Представь себе людей, которые считают Python сложным.
Так ты про этот аргумент можешь забыть, если мы пришли к тому, что оптимизировать надо алгоритмы, а не инструкции.
Я таких знаю несколько.
Я тоже. Печальное зрелище из серии "мамка заставила идти на айтишника учиться".
Моим первым ЯП стал почти python, ну по сути это было моё следующее движение после скриптов батника. Ну и после питона я решил попробовать C#....
С не быстрее. Ещё раз. Оптимизировать надо алгоритмы. Ты говоришь "С видимо быстрее" - ты это говоришь про то, как он суперкруто развернул рекурсию в цикл, когда я мог сделать таблицу? Ну, да, быстрее некуда.
Ну моим по-настоящему первым ЯП был С#
Мы уже оптимизировали алгоритмы. Ты опять куда-то виляешь. У нас таблица. Ты там какие-то пуши делаешь. Я, правда, не совсем понял, зачем.
Делаю push вместо mov, чтобы доказать, что: 1. Оптимизация инструкций ничто, по сравнению с оптимизацией алгоритмов. Потому что супер-мега оптимизированные инструкции будут медленнее быстрого алгоритма с медленными инструкциями 2. Пользователям пофиг на наносекунды Так-с, теперь ты говоришь, что у нас есть 2 кода с таблицами, на С и на ассемблере. На ассемблере инструкции более медленные были написаны. Поздравляю, используй 2-й пункт.
Вообще так получается, что пользователям все равно пофиг, а программист пишет на чем хочет
Так и есть. Главное правильно алгоритмы оптимизировать, и всё. Есть 2 программы с хорошими алгоритмами, но одна быстрее на 50 тыс. тиков, пользователю пофиг? Да, пофиг.
Мы можем точно так же оптимизировать алгоритмы на Си. По факту мы можем делать это проще, потому что не нужно думать, пуш или мов. И при этом компилятор может ещё что-то к этому добавить.
Я тебе уже приводил пример с кодированием аудио. Пользователю не пофиг, когда разница становится заметной. Поэтому обычно оптимизируют именно циклы или то, что вызывается в циклах.
90% времени всё равно займёт обдумывание алгоритма, так что теперь пофиг уже разработчику, push или mov там. Ну, лично мне пофиг. 4 часа думал, как обыграть цикл, написать предсказания, а потом расстраиваться, что думаешь 2 минуты над mov или push... Бред.
Коноплятор оптимизировать алгоритмы не умеет, проще/сложнее тут скорее вкусовщина, пользователю вообще плевать с высокой колокольни
Я тебя расстрою, но 90% времени занимают отладка алгоритма и подбор всяких коэффициентов.
Эти 50 тыс. тиков меньше миллисекунды....
В чём расстройство? Это не изменило мой аргумент)) я всё ещё не вижу смысла писать конкретно на С.
Значит нужно пойти и оптимизировать то, что реально тормозит?
А я про что пишу?
Про то, что стартап тормозит всю программу, плак-плак.
Ты шутишь?)) Ты читаешь мои сообщения вообще? https://t.me/ChatAssembler/325524
Ты просто как обычно съехал с темы и начал писать противоречащие друг другу вещи. Завтра ты это забудешь и будешь говорить «какой ужас, там inc».
Нет, я так пишу только чтобы Сишникам показать, что их компилятор не умеет оптимизировать программы по наносекундикам. А нормального человека это волновать и не должно, нормального человека вообще не волнует оптимизация компилятора, потому что нормальный человек думает над оптимизацией алгоритмов, и он скажет "да, там inc, он медленный, но я напишу быстрый алгоритм, и этот inc просто исполнится в 2 раза меньше".
И про что я там сказал?
Про то, как инк стал исполняться в… двадцать раз реже.
Нет, там он вообще должен был вырезаться, но не вырезался, потому что volatile, а поэтому это вообще сюда не подходит.
Ну если бы не волатайл, оно бы до константы свернулось. Отлично, я считаю. Было O(n*m), стало O(1).
Серьёзно будешь сейчас доказывать, что компилятор отлично оптимизирует алгоритмы? Я фиксирую.
А я это говорил?
Такое ощущение, что хочешь это говорить. Я уже понял, что он рекурсию в цикл может свернуть и что-то вырезать. Это полумеры.
Ну слушай, ты написал рекурсию, тебя ускорили в n раз. Это уже хорошо. Если ты можешь без рекурсии, ну так напиши без неё, оптимизируется что-то другое. Или нет. В любом случае хуже, чем средний программист на ассемблере, компилятор не напишет. А вот лучше может.
Ну ты снова по инструкциям сравниваешь. В том и дело, что "можешь без рекурсии - напиши без неё", а до этого ещё додуматься нужно. Вот кто на каком языке и лучше додумывается до этого - тот и молодец, и тут не важно, С, ассемблер, Rust, Python, C# или JavaScript. С хорошим алгоритмом и Python сможет С обогнать (если на С был написан плохой алгоритм).
Рекурсия - зло, рекурсия - от лукавого
Нет, это вообще не то, что я имел ввиду. Любой язык не отстаёт.
Ну, если тебе долго писать, то и пиши на С, кто запрещает то.
я его не знаю, никогда не писал на нем
Не писать, а изучать*
Он кстати, очень маленький его быстро изучить
Что ты тогда делаешь? Заставляешь?
Стикер
ну ладно, чуть мож и знаю, основные конструкции знаю, но только теоретически, никогда не практиковал сложнее хелловорда
Прикол в том, что ничего кроме основных конструкций и нет🤣
кого заставляю, не совсем понял тебя
И тут мы снова упираемся в то, что в высокоуровневом языке у нас есть средства, чтобы алгоритм разработать, отладить и доказать, что он быстрее. А в ассемблере у нас нет ничего. Поэтому в ассемблере мы чаще всего видим самое примитивное решение с аргументацией «и так сойдёт».
Что ты тут имел ввиду? Принуждение, агитация, или предложение?
Ну и акробатических кульбитов с приведениями типов
Я ведь реально буду сейчас крутить один и тот же диалог весь час))
У тебя хорошо получается. Вот только я уже почти ушёл.
Отлично. А то надоело мне уже одно и то же повторять.
Но я вот всё хочу про стартап услышать… Чтобы закрыть, наконец, тему мусора, из-за которого всё тормозит.
https://t.me/ChatAssembler/321354 примерно тоже самое что и тут
Всё просто. Есть 2 одинаковых алгоритма, один на ассемблере, другой на С. К алгоритму на С прибавляй константу стартапа, получаешь более медленную программу. Это если ты хочешь тиками похвастаться. Если не хочешь - тогда этого делать не надо, пишу уже третий раз.
Кстати, я его почти уже сколотил)) гвоздей не хватило.
Капище ещё вокруг сделай
Прикольная идея))
ты стартап вызываешь ровно один раз для настройки параметров среды и всё, это почти тоже самое что делает ядро когда грузит твой PE файл и по факту а работе программы относится косвенно
Относится напрямую. Задержка до выполнения алгоритма в тиках.
Ура! Мы освоили одинаковые алгоритмы! Теперь мы берём вычислительную задачу, начинаем хвастаться тиками, кто-то кого-то обгоняет на полпроцента, и стартап перестаёт иметь значение.
ты используешь апи ОС?
а мы санитаров пригласим :)
Тссс, не санитаров, а шаманов в белых халатах🤣
ну тогда уж говори ещё за поиск файла на диске, поиск нужных разрешений для файла, его проверку антивирусом, создание потока, выделение контекста, аллолкацию таблиц дескрипторов, поиск ми загрузку библиотек и всё это вот
функции ведь в библиотеках. в каких библиотеках нет стартап кода при загрузке?
Ну этот стартап код нужен наверное им для работы
так и стартап проги тоже ей для работы нужен
бинго. функции сишки тоже требуют стартап для работы
Ну вообще... Нет. Вон на асме пишешь и почему-то ему сишный стартап не нужен
Если мне понадобится, я tls-колбек напишу
ну если не используешь msvcrt, то конешно не нужен
А если использую, startup у самой проги почему-то не появляется
tls кстати тоже в стартапе настраивается
Ага, и фига с два сишка даст собственный tls-колбек сделать
потому что это не надо делать
она у библиотеки есть. а на сишка не использует эту библиотеку, ибо код там влинкован в саму программу. и примерно это так вижу
А вот не надо тут мне указывать что мне делать надо, а что не надо. Я программист, я знаю как надо, а язык - инструмент
Обсуждают сегодня