169 похожих чатов

Я говорю, что вот эта оптимизация инструкций от компилятора -

это показуха, он не оптимизирует алгоритмы, глупый он ещё.
А если алгоритмы не оптимизирует - какой прок с него? Он Фибоначчи в таблицу не переведёт.

107 ответов

19 просмотров

То есть ты забыл, как твой кривой алгоритм ускорили в n раз?

КТ315
Какой?

Тот самый, где размотало и заинлайнило внутренние уровни рекурсии.

КТ315- Автор вопроса
s54820
Тот самый, где размотало и заинлайнило внутренние ...

И это максимум компилятора. Ты реально на это будешь опираться? А если я сейчас приведу пример алгоритма, который компилятор в тупую вот так и закомпилирует, и ничего там от самого алгоритма не оптимизирует? Что тогда?

КТ315
И это максимум компилятора. Ты реально на это буде...

Тогда у нас есть два варианта: компилятор, который может сделать лучше, чем ты написал. И ты, который написал, как мог.

КТ315- Автор вопроса
s54820
Тогда у нас есть два варианта: компилятор, который...

Компилятор в ближайшем будущем никогда не сможет сделать лучше, первый вариант отпадает. Второй вариант остаётся, и это как раз про запуск Photoshop, это про архиваторы, это про всё остальное. На инструкции пофиг, на данные пофиг, ты придумай более быстрый алгоритм! Вот это куда важнее.

КТ315
Компилятор в ближайшем будущем никогда не сможет с...

Отлично. А стартап-то выкидывать зачем, вот в чём вопрос.

КТ315- Автор вопроса
s54820
Тот самый, где размотало и заинлайнило внутренние ...

И я ещё раз говорю, что он там не смог сделать таблицу. Он развернул рекурсию, да, но таблицу не сделал. Я сделаю таблицу, и переплюну все его старания. А всё почему? Потому что АЛГОРИТМ более быстрый. И даже если в моём коде получения данных с таблицы будет вместо mov eax, dword[arr+ecx*4] - push dword[arr+ecx*4] pop eax Это всё равно быстрее, даже если я наляпаю неадекватные инструкции. То есть, вот эта оптимизация инструкций никак не поможет. Думать надо над алгоритмами, а не над инструкциями.

КТ315
И я ещё раз говорю, что он там не смог сделать таб...

Ура! Можно брать питон, думать над алгоритмами там, а потом переписывать на сишке!

КТ315- Автор вопроса
s54820
Отлично. А стартап-то выкидывать зачем, вот в чём ...

Это был аргумент против оптимизации инструкций. Коль начал считать вот эти тики и хвастаться, что компилятор сделал SSE инструкции - тогда и стартап учитывай. А если нормально подойти к этому - то и ничего выкидывать не надо.

s54820
Ура! Можно брать питон, думать над алгоритмами там...

Или брать сишку, думать над алгоритмом там и переписывать на асм

КТ315- Автор вопроса
КТ315
А я с Python на ассемблер переписываю.

А мне в кайф сразу на асме писать.

КТ315- Автор вопроса
The Bird of Hermes
А мне в кайф сразу на асме писать.

Не, ну я тоже сразу пишу. Просто если есть какой-то алгоритм, о котором я ранее не слышал - то мне нужно кодоподобное объяснение, а синтаксис у Python намного лучше С, это чистый синтаксис прототипа. Его удобно на ассемблер переписывать.

КТ315
Не, ну я тоже сразу пишу. Просто если есть какой-т...

С кодоподобным объяснением слишком легко, да и я люблю писать алгоритмы сам, переписывать скучно

КТ315
Это был аргумент против оптимизации инструкций. Ко...

Опять двадцать пять. У тебя там есть рисовалка графиков. Нарисуй график двух функций: k + 0.998 * x и 1.0 * x (k это стартап, он константный). Ну если ты в голове представить не можешь, придётся рисовать.

КТ315- Автор вопроса
The Bird of Hermes
С кодоподобным объяснением слишком легко, да и я л...

А и не надо идти по самому сложному пути. Тебе надо понять быстрый алгоритм и быстро его реализовать, или с бубном танцевать?

КТ315
А и не надо идти по самому сложному пути. Тебе на...

Танцевать с бубном, конечно, если бы я любил простые пути я бы не писал на ассемблере

КТ315- Автор вопроса
The Bird of Hermes
Танцевать с бубном, конечно, если бы я любил прост...

Зачем тогда пишешь, если считаешь ассемблер сложным?

КТ315
Зачем тогда пишешь, если считаешь ассемблер сложны...

Я не считаю ассемблер сложным сейчас. Дорога до того, чтобы считать его простым, была очень сложной.

КТ315- Автор вопроса
The Bird of Hermes
Я не считаю ассемблер сложным сейчас. Дорога до то...

А представь тех, кто только на Python писать умеют, и решили выучить С.

КТ315
Это к чему?

Я это сегодня уже несколько раз повторил. Чем больше итераций, тем меньше тебя заботят константы, которые к итерациям не относятся.

КТ315
А представь тех, кто только на Python писать умеют...

Представь себе людей, которые считают Python сложным.

КТ315- Автор вопроса
s54820
Я это сегодня уже несколько раз повторил. Чем боль...

Так ты про этот аргумент можешь забыть, если мы пришли к тому, что оптимизировать надо алгоритмы, а не инструкции.

КТ315- Автор вопроса
КТ315
Я таких знаю несколько.

Я тоже. Печальное зрелище из серии "мамка заставила идти на айтишника учиться".

КТ315
А представь тех, кто только на Python писать умеют...

Моим первым ЯП стал почти python, ну по сути это было моё следующее движение после скриптов батника. Ну и после питона я решил попробовать C#....

КТ315- Автор вопроса

С не быстрее. Ещё раз. Оптимизировать надо алгоритмы. Ты говоришь "С видимо быстрее" - ты это говоришь про то, как он суперкруто развернул рекурсию в цикл, когда я мог сделать таблицу? Ну, да, быстрее некуда.

КТ315
С не быстрее. Ещё раз. Оптимизировать надо алгорит...

Мы уже оптимизировали алгоритмы. Ты опять куда-то виляешь. У нас таблица. Ты там какие-то пуши делаешь. Я, правда, не совсем понял, зачем.

КТ315- Автор вопроса
s54820
Мы уже оптимизировали алгоритмы. Ты опять куда-то ...

Делаю push вместо mov, чтобы доказать, что: 1. Оптимизация инструкций ничто, по сравнению с оптимизацией алгоритмов. Потому что супер-мега оптимизированные инструкции будут медленнее быстрого алгоритма с медленными инструкциями 2. Пользователям пофиг на наносекунды Так-с, теперь ты говоришь, что у нас есть 2 кода с таблицами, на С и на ассемблере. На ассемблере инструкции более медленные были написаны. Поздравляю, используй 2-й пункт.

КТ315
Делаю push вместо mov, чтобы доказать, что: 1. Опт...

Вообще так получается, что пользователям все равно пофиг, а программист пишет на чем хочет

КТ315- Автор вопроса
The Bird of Hermes
Вообще так получается, что пользователям все равно...

Так и есть. Главное правильно алгоритмы оптимизировать, и всё. Есть 2 программы с хорошими алгоритмами, но одна быстрее на 50 тыс. тиков, пользователю пофиг? Да, пофиг.

КТ315
Делаю push вместо mov, чтобы доказать, что: 1. Опт...

Мы можем точно так же оптимизировать алгоритмы на Си. По факту мы можем делать это проще, потому что не нужно думать, пуш или мов. И при этом компилятор может ещё что-то к этому добавить.

КТ315
Так и есть. Главное правильно алгоритмы оптимизиро...

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

КТ315- Автор вопроса
s54820
Мы можем точно так же оптимизировать алгоритмы на ...

90% времени всё равно займёт обдумывание алгоритма, так что теперь пофиг уже разработчику, push или mov там. Ну, лично мне пофиг. 4 часа думал, как обыграть цикл, написать предсказания, а потом расстраиваться, что думаешь 2 минуты над mov или push... Бред.

s54820
Мы можем точно так же оптимизировать алгоритмы на ...

Коноплятор оптимизировать алгоритмы не умеет, проще/сложнее тут скорее вкусовщина, пользователю вообще плевать с высокой колокольни

КТ315
90% времени всё равно займёт обдумывание алгоритма...

Я тебя расстрою, но 90% времени занимают отладка алгоритма и подбор всяких коэффициентов.

КТ315- Автор вопроса
s54820
Я тебе уже приводил пример с кодированием аудио. П...

Эти 50 тыс. тиков меньше миллисекунды....

КТ315- Автор вопроса
s54820
Я тебя расстрою, но 90% времени занимают отладка а...

В чём расстройство? Это не изменило мой аргумент)) я всё ещё не вижу смысла писать конкретно на С.

КТ315
Эти 50 тыс. тиков меньше миллисекунды....

Значит нужно пойти и оптимизировать то, что реально тормозит?

КТ315- Автор вопроса
КТ315
А я про что пишу?

Про то, что стартап тормозит всю программу, плак-плак.

КТ315- Автор вопроса
s54820
Про то, что стартап тормозит всю программу, плак-п...

Ты шутишь?)) Ты читаешь мои сообщения вообще? https://t.me/ChatAssembler/325524

КТ315
Ты шутишь?)) Ты читаешь мои сообщения вообще? http...

Ты просто как обычно съехал с темы и начал писать противоречащие друг другу вещи. Завтра ты это забудешь и будешь говорить «какой ужас, там inc».

КТ315- Автор вопроса
s54820
Ты просто как обычно съехал с темы и начал писать ...

Нет, я так пишу только чтобы Сишникам показать, что их компилятор не умеет оптимизировать программы по наносекундикам. А нормального человека это волновать и не должно, нормального человека вообще не волнует оптимизация компилятора, потому что нормальный человек думает над оптимизацией алгоритмов, и он скажет "да, там inc, он медленный, но я напишу быстрый алгоритм, и этот inc просто исполнится в 2 раза меньше".

КТ315- Автор вопроса

И про что я там сказал?

КТ315
И про что я там сказал?

Про то, как инк стал исполняться в… двадцать раз реже.

КТ315- Автор вопроса
s54820
Про то, как инк стал исполняться в… двадцать раз р...

Нет, там он вообще должен был вырезаться, но не вырезался, потому что volatile, а поэтому это вообще сюда не подходит.

КТ315
Нет, там он вообще должен был вырезаться, но не вы...

Ну если бы не волатайл, оно бы до константы свернулось. Отлично, я считаю. Было O(n*m), стало O(1).

КТ315- Автор вопроса
s54820
Ну если бы не волатайл, оно бы до константы сверну...

Серьёзно будешь сейчас доказывать, что компилятор отлично оптимизирует алгоритмы? Я фиксирую.

КТ315- Автор вопроса
s54820
А я это говорил?

Такое ощущение, что хочешь это говорить. Я уже понял, что он рекурсию в цикл может свернуть и что-то вырезать. Это полумеры.

КТ315
Такое ощущение, что хочешь это говорить. Я уже пон...

Ну слушай, ты написал рекурсию, тебя ускорили в n раз. Это уже хорошо. Если ты можешь без рекурсии, ну так напиши без неё, оптимизируется что-то другое. Или нет. В любом случае хуже, чем средний программист на ассемблере, компилятор не напишет. А вот лучше может.

КТ315- Автор вопроса
s54820
Ну слушай, ты написал рекурсию, тебя ускорили в n ...

Ну ты снова по инструкциям сравниваешь. В том и дело, что "можешь без рекурсии - напиши без неё", а до этого ещё додуматься нужно. Вот кто на каком языке и лучше додумывается до этого - тот и молодец, и тут не важно, С, ассемблер, Rust, Python, C# или JavaScript. С хорошим алгоритмом и Python сможет С обогнать (если на С был написан плохой алгоритм).

КТ315- Автор вопроса

Нет, это вообще не то, что я имел ввиду. Любой язык не отстаёт.

КТ315- Автор вопроса

Ну, если тебе долго писать, то и пиши на С, кто запрещает то.

КТ315
Ну, если тебе долго писать, то и пиши на С, кто за...

я его не знаю, никогда не писал на нем

Не писать, а изучать*

Aiwan \ (•◡•) / _bot
я его не знаю, никогда не писал на нем

Он кстати, очень маленький его быстро изучить

КТ315- Автор вопроса

Что ты тогда делаешь? Заставляешь?

Стикер

Alexey
Он кстати, очень маленький его быстро изучить

ну ладно, чуть мож и знаю, основные конструкции знаю, но только теоретически, никогда не практиковал сложнее хелловорда

Aiwan \ (•◡•) / _bot
ну ладно, чуть мож и знаю, основные конструкции зн...

Прикол в том, что ничего кроме основных конструкций и нет🤣

КТ315
Что ты тогда делаешь? Заставляешь?

кого заставляю, не совсем понял тебя

КТ315
Ну ты снова по инструкциям сравниваешь. В том и де...

И тут мы снова упираемся в то, что в высокоуровневом языке у нас есть средства, чтобы алгоритм разработать, отладить и доказать, что он быстрее. А в ассемблере у нас нет ничего. Поэтому в ассемблере мы чаще всего видим самое примитивное решение с аргументацией «и так сойдёт».

КТ315- Автор вопроса

Что ты тут имел ввиду? Принуждение, агитация, или предложение?

The Bird of Hermes
Прикол в том, что ничего кроме основных конструкци...

Ну и акробатических кульбитов с приведениями типов

КТ315- Автор вопроса
s54820
И тут мы снова упираемся в то, что в высокоуровнев...

Я ведь реально буду сейчас крутить один и тот же диалог весь час))

У тебя хорошо получается. Вот только я уже почти ушёл.

КТ315- Автор вопроса
s54820
У тебя хорошо получается. Вот только я уже почти у...

Отлично. А то надоело мне уже одно и то же повторять.

КТ315
Отлично. А то надоело мне уже одно и то же повторя...

Но я вот всё хочу про стартап услышать… Чтобы закрыть, наконец, тему мусора, из-за которого всё тормозит.

КТ315
Что ты тут имел ввиду? Принуждение, агитация, или ...

https://t.me/ChatAssembler/321354 примерно тоже самое что и тут

КТ315- Автор вопроса
s54820
Но я вот всё хочу про стартап услышать… Чтобы закр...

Всё просто. Есть 2 одинаковых алгоритма, один на ассемблере, другой на С. К алгоритму на С прибавляй константу стартапа, получаешь более медленную программу. Это если ты хочешь тиками похвастаться. Если не хочешь - тогда этого делать не надо, пишу уже третий раз.

КТ315- Автор вопроса
Aiwan \ (•◡•) / _bot
https://t.me/ChatAssembler/321354 примерно тоже с...

Кстати, я его почти уже сколотил)) гвоздей не хватило.

КТ315- Автор вопроса
КТ315
Всё просто. Есть 2 одинаковых алгоритма, один на а...

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

КТ315- Автор вопроса
Mixail Frolov
ты стартап вызываешь ровно один раз для настройки ...

Относится напрямую. Задержка до выполнения алгоритма в тиках.

КТ315
Всё просто. Есть 2 одинаковых алгоритма, один на а...

Ура! Мы освоили одинаковые алгоритмы! Теперь мы берём вычислительную задачу, начинаем хвастаться тиками, кто-то кого-то обгоняет на полпроцента, и стартап перестаёт иметь значение.

КТ315- Автор вопроса
The Bird of Hermes
Капище ещё вокруг сделай

а мы санитаров пригласим :)

Mixail Frolov
а мы санитаров пригласим :)

Тссс, не санитаров, а шаманов в белых халатах🤣

КТ315
Относится напрямую. Задержка до выполнения алгорит...

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

КТ315
Конечно.

функции ведь в библиотеках. в каких библиотеках нет стартап кода при загрузке?

Aiwan \ (•◡•) / _bot
функции ведь в библиотеках. в каких библиотеках не...

Ну этот стартап код нужен наверное им для работы

The Bird of Hermes
Ну этот стартап код нужен наверное им для работы

так и стартап проги тоже ей для работы нужен

The Bird of Hermes
Ну этот стартап код нужен наверное им для работы

бинго. функции сишки тоже требуют стартап для работы

Mixail Frolov
так и стартап проги тоже ей для работы нужен

Ну вообще... Нет. Вон на асме пишешь и почему-то ему сишный стартап не нужен

The Bird of Hermes
Ну вообще... Нет. Вон на асме пишешь и почему-то е...

ну если не используешь msvcrt, то конешно не нужен

Aiwan \ (•◡•) / _bot
ну если не используешь msvcrt, то конешно не нужен

А если использую, startup у самой проги почему-то не появляется

The Bird of Hermes
Если мне понадобится, я tls-колбек напишу

tls кстати тоже в стартапе настраивается

Ага, и фига с два сишка даст собственный tls-колбек сделать

The Bird of Hermes
А если использую, startup у самой проги почему-то ...

она у библиотеки есть. а на сишка не использует эту библиотеку, ибо код там влинкован в саму программу. и примерно это так вижу

Mixail Frolov
потому что это не надо делать

А вот не надо тут мне указывать что мне делать надо, а что не надо. Я программист, я знаю как надо, а язык - инструмент

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта