GoldFinch Если брать с обеих сторон среднестатистических программистов, то у асм-кода нет никаких шансов. Компилятор генерирует плохой код, когда не может побороть глупость программиста.
green О чем я и пытался создать. Я так понял, автор топика хочет, чтоб кто-то предоставил ему алгос с супероптимизацией на асме, а он пойдет хз куда к ЯВУ-шникам и будет бросать козыри, что именно _этот алгос_ ни один компилятор (в его случае gcc) не сделает быстрее. Иначе я просто непонимаю, в чем проблема у автора, ему уже насоветовали, что реализовать. Вперед, кто мешает?
green Если под среднестатичестическим программером для асма ты понимаешь бегиннерса, который сам не знает чего хочет и вот забрёл асм поизучать, то ты прав в том смысле что таких "ассемблерщиков" действительно большинство и они не идут ни в какое сравнение с оптимизирующим компилятором ) А к тем кто способен мыслить на асме (т.е. не переводить в уме мысли на Hilevel в асм код, а наоборот hilevel код строить на основе асм мыслей) то к таким людям понятие среднестатистический просто неприменимо ибо мало их катастрофически. Имхо акция ТС тем и актуальна, что может быть поможет кому-то из бегиннерсов не свернуть с правильного пути, а пополнить их ряды
GoldFinch ИМХО вопоос был не как удобно решать задачи, а чем затормозить компилятор. RTTI неплохой тормоз.
Хорошо помогает также создание искусственных зависимостей переменных, не позволяющих компилятору делать noalias-оптимизацию (т.е. держать переменные в регистрах, выносить из цикла "константный" код и т.п.).
Y_Mur Смотря что за путь. Если писать на чистом асме, презрев ЯВУ и компиляторы, то это - путь мазохиста. В реальном проекте 99.9% кода - простая рутина, где ты не сможешь существенно выиграть у компилятора даже теоретически. А вдобавок к куче потраченного времени получаешь практически немасштабируемый код.
В теме Задача о восьми Ферзях оптимировали алгоритм на скорость. Дубовый код MS VC6 проигрывал ручному ассемблерному всего около 25%. А если современный компилятор взять, то разрыв наверное и того меньше будет.
Вы хотите опустить gcc ниже уровня городской канализации? Это не так просто... Чтобы сделать это, надо иметь квалификацию не ниже той, что у создателя gcc. Желаю вам успехов в вашем безнадёжном предприятии
Самый тривиальный пример - это "переставить байты в 32разрядном числе из big-endian в little-endian и наоборот" обычный С++ программист напишет цикл, продвинутый C++ программист вызовет ws2_32.htonl, а я применю bswap. Но это действительно слишком просто и неинтересно.
GoldFinch А ещё более продвинутый вызовет (в случае gcc) __builtin_bswap32, которую компилятор заинлайнит как инструкцию bswap.
GoldFinch интересно, а как "обычный ассемблер программист" напишет графический редактор или онлаен рпг?
Можно в WASM.A&O поискать топик, где народ соревнуется в написании самых быстрых реализаций Например, это: http://www.wasm.ru/forum/viewtopic.php?id=29920