Сейчас на форуме: jinoweb (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› ByteToHex |
<< . 1 . 2 . 3 . 4 . 5 . >> |
Посл.ответ | Сообщение |
|
Создано: 07 июля 2018 22:06 · Поправил: Isaev · Личное сообщение · #1 Не подскажите максимально быстрый способ перевода? Помню во времена доса на асме буквально из десятка байт был финт для этого дела, может помнит кто? А то дельфовый IntToHex(n, 2) сожрал всю скорость, посмотрев сырки стало сразу понятно куда) А вообще нужно из md5 массива байт строку собрать если делать влоб Code:
то 10млн раз выполняются около 6 сек, хотелось бы поделить это время на 2 или 3... к слову, если вместо IntToHex просто добавлять '00', то будет 2 сек. Пробовал вместо простой конкатенации заюзать TStringBuilder, но нынче, похоже менеджер памяти уже сам вполне справляется с этим хламом и с ним только на 1 сек дольше получается. Так же пробовал выделить память сразу под всю строку и мувами загонять на места, но получается тоже дольше... в общем проблема только в переводе в hex, остальное, похоже достаточно оптимально работает ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 09 июля 2018 19:48 · Поправил: bizkitlimp · Личное сообщение · #2 SReg пишет: тут же похерив всю "оптимизацию"(?), дёрнув SetLength Да плевать на этот setlength, главное чисто конвертация. Я понял там вверхняя и нижняя часть байтов в качестве самостоятельных чисел, затем сравнение с 9-кой, если выше то делаем +7, в конце всем +0x30 и получается строка. Инструкций psrlb/psllb не сущ-ют почему-то, но разом все равно криво можно. Code:
О, порядок 16 байтов черт знает какой, т.е. если 0xDEAD, то 00000000DEAD или DEAD0000.... надо. Хз, проще же таблицу сделать 0-255 / '00'-'FF' и всё. ![]() |
|
Создано: 09 июля 2018 20:11 · Личное сообщение · #3 shellstorm, это не глупость, а объективный факт. Неповоротливость софта, написанного на С/C++? Ты либо шутишь, либо ничего о нем не знаешь. Да, ща бы писать операционные системы на неповоротливом языке, млять. Давно такой херни не читал ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 09 июля 2018 20:27 · Личное сообщение · #4 Crawler пишет: это не глупость, а объективный факт. объективный факт в том, что сишка это язык общего назначения, на котором написаны некоторые операционные системы, а у тебя глупость. где я писал о неповоротливости, если речь была о решении архитектурных проблем сишки? чем условный rust или delphi неповоротлевей сишки, совсем наркоман? учи уроки и не путай язык с реализацией компилятора. например билдер сишка, но драйвера на нем особо не попишешь, такая реализация, но несмотря на это std-11. именно, сейчас бы писать о языках не имея о них представления. ![]() ![]() |
|
Создано: 09 июля 2018 21:16 · Поправил: bizkitlimp · Личное сообщение · #5 Возвращаясь к сабж, не верю, инттухекс нормальная(кроме purepascal-версии). Вот это: Code:
На это какбы: Code:
Для начала. 16 или 8 нужно ставить для 8 байтов - не помню. Вместо 16(конвертаций) + 15(сложений) т.е. 31(!) пинка менеджеру памяти - должно стать 3. ![]() |
|
Создано: 09 июля 2018 23:01 · Личное сообщение · #6 |
|
Создано: 10 июля 2018 01:44 · Поправил: dosprog · Личное сообщение · #7 Плоха. Вариант с таблицей 0..F тут уже был, он наиболее прост и понятен, но он не лучший. Хотя смотря для чего. Мне тот вариант тоже нравится. Добавлено спустя 13 минут Crawler пишет: Давно такой херни не читал Да уж. Если на асме использовать конвенции при вызовах, а не аргументы в регистрах, то программа почти ничем не будет отличаться от транслированной с Си. Добавлено спустя 56 минут Вообще, если сабжевый вопрос и не применим напрямую к заявленной цели со всякими хешами, то уж для написания чего-то вроде хекс-редактора применим вполне. Там крайне важно очень быстрое преобразование bin->hex. ![]() |
|
Создано: 10 июля 2018 03:59 · Поправил: f13nd · Личное сообщение · #8 dosprog пишет: Вообще, если сабжевый вопрос и не применим напрямую к заявленной цели со всякими хешами, то уж для написания чего-то вроде хекс-редактора применим вполне. Там применимо всё вообще, всё что в голову взбредет, будет в нех редакторе работать одинаково и разницы не почувствуешь. Все эти способы развивания гиперскоростей на гиперкочках как раз и дают драматическую разницу только при брутфорсе чего-либо. Когда в каком-нибудь простеньком алгоритме распихиваешь сколько можешь промежуточные значения по регистрам и он 48 бит перебирает пару суток, а не недель. Потому и вопрос нафига козе баян, если во всём этом добре потом еще коллизии искать предстоит. А в утилитарных задачах 5мс от 15мс на глаз отличить нельзя. ----- 2 оттенка серого ![]() |
|
Создано: 10 июля 2018 09:06 · Поправил: dosprog · Личное сообщение · #9 f13nd пишет: Там применимо всё вообще, всё что в голову взбредет, будет в нех редакторе работать одинаково и разницы не почувствуешь. Нет. Скорость прокрутки текста будет говённая. Кстати, разница между hiew и qview чувствовалась на 386-х машинах. Hiew был тяжеловат. f13nd пишет: А в утилитарных задачах 5мс от 15мс на глаз отличить нельзя. На глаз и не отличают. Такие различия фиксируются уже на уровне подсознания. ![]() |
|
Создано: 10 июля 2018 10:06 · Личное сообщение · #10 |
|
Создано: 10 июля 2018 10:47 · Поправил: f13nd · Личное сообщение · #11 dosprog пишет: Нет. Скорость прокрутки текста будет говённая. Один из лучших (а может быть лучший) нех редактор, таким вот говёным образом он преобразует подгруженный при говёной прокрутке буфер в нех, чтоб вывести на экран. На 386м его запускать не пробовал, но с современным процом вообще никаких нареканий и по скорости обработки двоичных данных он куда интересней воркшопа. ----- 2 оттенка серого ![]() |
|
Создано: 10 июля 2018 11:08 · Личное сообщение · #12 |
|
Создано: 10 июля 2018 11:26 · Поправил: dosprog · Личное сообщение · #13 f13nd пишет: Один из лучших (а может быть лучший) нех редактор ) Ты только не смешы, не надо. f13nd пишет: На 386м его запускать не пробовал )) Попробуй, чо ManHunter пишет: Красивый вариант от Зубкова и компактный вариант с табличкой и XLAT по скорости проигрывают. Ну, у меня в ходу оба варианта (кроме описанного в зубковском опусе) ![]() |
|
Создано: 10 июля 2018 11:37 · Личное сообщение · #14 dosprog пишет: )) Попробуй, чо Пытались, найдя такой капролит в самом дальнем углу склада списанной техники. Спаяли VGA-CGA переходник, нашли проектор, который согласился на разрешении че-то типа 200х300 работать, но сама материнка работать отказалась. Поэтому мое знакомство с легендой не состоялось. dosprog пишет: ) Ты только не смешы, не надо. Я не знаю какой редактор для 386 проца лучше. После долгого и мучительного поиска инструмента для работы я пришел к этому вот инструменту. ----- 2 оттенка серого ![]() |
|
Создано: 10 июля 2018 13:21 · Поправил: Crawler · Личное сообщение · #15 shellstorm пишет: учи уроки shellstorm пишет: совсем наркоман Бомбануло, поэтому переходишь на личности? Чувствую, диалога с тобой не получится. Попрошу в дальнейшем не допускать таких оскорблений. Окей, окей, давай возьмём/напишем две идентичных программы из любой прикладной или системной области (раз уж ты говоришь о назначении) и проверим, что быстрее будет работать - программа на Си или на Делфи. Ты сольёшься с этого теста, гарантирую, потому что современные Си-компиляторы настолько великолепно оптимизируют код, что если человек, который его писал, не совсем дурак, он будет быстрее чего угодно, за исключением программы, *написанной на чистом ассемблере абсолютным гением. shellstorm пишет: где я писал о неповоротливости Вот здесь? shellstorm пишет: на момент его создания его хейтили за прожорливость и неповоротливость готового софта Просто без комментариев. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 10 июля 2018 14:46 · Личное сообщение · #16 Crawler пишет: Бомбануло, поэтому переходишь на личности? это твоя проблема, ты же даже не понимаешь о чем было ранее написано, посмотри интервью создателей и открой стандарт, там ищи систему с оптимизациями, все равно что с клопом разговаривать. Crawler пишет: Вот здесь? Ключевое слово - на момент создания, если ты, додик, не знал, на момент создания и windows хейтили за слоупочность. Первые версии компилятора состояли из набора утилит из-за ограничения памяти и даже в современном си остались некоторые рудименты, разделение сборки на этапе были необходимы из-за ограничения памяти, и из-за этого код выдавался усредненный, и раздельная сборка это тоже из той эпохи, на тот момент качественней писали на ассемблере, память на тот момент была дорогой, и она сама по себе была ограниченной, даже за большие деньги нельзя было поставить 100500 гигабайт, большие исходники невозможно было оттранслировать, авторам пришлось писать утилиту для вырезания отдельных функций и сборки таких кусков. Стандарту класть на систему, это язык общего назначения, который можно использовать для написания системы, в зависимости от реализации компилятора, паскаль с фронтедом gcc внезапно генерирует такой же код, как и для сишки, это раз, второе, в стандарте не оговариваются частности, там только требования, допустим сортировка должна выполняться с такой-то сложностью, любой адекватный создатель компилятора обязан выполнять требование, даже если у него есть лучше алгоритм. Но клопы не видят разницы между языком и реализацией языка, главный критерий, это полнота языка, возможность работать напрямую с памятью (сырые указатели), возможность компиляции в нативный код. LLVM усреднил реализации языков, а в анализе ast многие дадут фору сишке. Хотя о чем я, ты все равно ничего не поймешь. ![]() ![]() |
|
Создано: 10 июля 2018 18:49 · Поправил: difexacaw · Личное сообщение · #17 bizkitlimp Я это не могу собрать текущим билдом масма, для части инструкций необходима 10-я версия компилера, в принципе он есть, но будут корреляции с хидерами. Короче не вижу смысла тратить время, очевидно что профайл прямо зависит от числа инструкций, у вас их слишком много, те гипотетически профайл ляжет, но может быть компенсирован пакетной обработкой, за счёт одновременного вычисления группы. Удивительно как такую вермишель" можно написать ![]() Точнее если вы знаете наборы расширений столь хорошо, что можите ими манипулировать как базовыми наборами, тогда респект! Crawler Последнее обсуждение абсолютно не адекватно. Это спор про какой язык/компилер лучше, но всё зависит от конкретного человека, который реализует. Для обычных приложений данная оптимизация смысла не имеет, потоки почти всё время спят в ядре, ожидая события. Но есть задачи, где оптимизация решает всё и там скрипт полностью бесполезен. Про его оптимизатор говорят люди, далёкие от реальной оптимизации. Как бы не менялся говяный выхлоп компилера, он считается годным, без причин и обоснований, кучи системных манов по оптимизации конечно же читать не нужно ![]() ----- vx ![]() |
|
Создано: 10 июля 2018 20:03 · Личное сообщение · #18 difexacaw пишет: Это спор про какой язык/компилер лучше Людей разрабатывающих оптимизации для компиляторов можно посчитать по пальцам и это не просто так, есть пару плэйгроунд для обкатки математический теорий оптимизации, но их выхлоп не годится для прода, хотя в некоторых случаях уделывают даже cl, но все это не имеет отношения к языкам от слова совсем, неважно какие скобки стоят и в каком количестве, и скобки ли вообще, главное на сколько выпуклый лоб был у разработчиков оптимизатора. ![]() ![]() |
|
Создано: 10 июля 2018 20:12 · Личное сообщение · #19 shellstorm Имхо все эти заявления про скриптовый оптимизатор - фейк. Давайте так, покажите пример даже для данной задачи, что скрипт быстрее асм и что я не смогу его выхлоп оптимизировать; снимем профайл. Что бы опираться на реальные факты, а не на какие то косяки с гуем и прочую чепуху. Результат предсказуем. ----- vx ![]() |
|
Создано: 10 июля 2018 20:22 · Поправил: bizkitlimp · Личное сообщение · #20 difexacaw На AVX2 20 инструкций должно выйти в теории для 16 байт: Code:
Надо поискать штуку, которая хотя бы эмулирует, SDE кажется, вслепую не осилю. SSE на насме максимум могу: Code:
Батник: Code:
![]() |
|
Создано: 10 июля 2018 20:31 · Поправил: difexacaw · Личное сообщение · #21 |
|
Создано: 10 июля 2018 20:34 · Личное сообщение · #22 difexacaw пишет: Имхо все эти заявления про скриптовый оптимизатор - фейк. Давайте так, покажите пример даже для данной задачи, что скрипт быстрее асм и что я не смогу его выхлоп оптимизировать; снимем профайл. Легко, chrome быстрее твоего асм кода, ты его просто на ассемблере не напишешь, а измерять качество оптимизатора на hello word это что-то из разряда специальной олимпиады, но можешь начинать оптимизировать. ![]() ![]() |
|
Создано: 10 июля 2018 20:45 · Поправил: difexacaw · Личное сообщение · #23 shellstorm Именно хром был первым апп который тестился под моим визором, как вы говорите - просадку бы не заметили, хоть она и была десятикратной. Плохой пример. Вы приводите в пример какое то приложение, это никакого отношения к профайлу не имеет. > измерять качество оптимизатора на hello word Это не выхлоп компилера, а импортируемый осевой интерфейс. Нас же интересует выходной код компилера, а не осевые функции, не нужно вводить в заблуждение ![]() > если хочется обсудить именно варианты оптимизаций, создай тему в оффтопе и обсудим Последняя моя тема и была по оптимизации и компилер там вообще не при делах, алгоритм определяет профайл. Решение я нашёл, но это совсем иная тема. Я же говорю про оптимизацию компиляторного кода. Нэйтив компилер генерит чистый код, так например собирается ядро. Там нет понятий компиляторных оптимизаций. ----- vx ![]() |
|
Создано: 10 июля 2018 20:48 · Личное сообщение · #24 difexacaw Да там всё автоматом запоминается со временем, когда перечитываешь доки, видишь как в дебаггере регистры меняются. Просто кодишь на асме мини-алгоритмы. shuffling только разный в pshufb / pshuflw / pshufd там везде по-разному imm8 интерпретируется, его вот вечно приходится перечитывать как именно закодить для определенной инструкции. ![]() |
|
Создано: 10 июля 2018 21:01 · Личное сообщение · #25 difexacaw пишет: Вы приводите в пример какое то приложение, это никакого отношения к профайлу не имеет. Как раз на большом софте оптимизатор важен и наиболее заметен, на 100-строчниках делают замеры только клопы, касательно chrome, там неплохой пример оптимизации, вместо вылизывания какой-то условной сортировки, люди обратили внимания как грузит процессор один из слоев рендера, отключив его, сразу получился большой прирост скорости, такая же родовая болезнь у electron'a, после патча VSCode стал гораздо меньше жрать памяти и грузить процессор. difexacaw пишет: Там нет понятий компиляторных оптимизаций. Учитывая, что сейчас даже для микроконтроллеров стали писать прошивки на плюсах или вовсе питоне с нодой, понятий оптимизации более чем достаточно, тем более основная часть ядра написана на си. Компилятор орудует правила, которые составляли неглупые люди, возьмем твой любимый пюре васик и если ты сделаешь аналог, заложив свои правила оптимизации, это будет оптимизирующий васик индия клерка и который в некоторых случаях, если конечно оптимизатор адекватно написан, он будет выдавать выхлоп лучше самого индия,и который будет вставлять графы еще на этапе трансляции и нагибать всех ав вендоров в последний, окончательный раз. Очень мало задач где требуется вылизывание каждого байта, тем более для современных процессоров это делать сложно и еще сложнее когда актуальных версий процессоров много. Но кто считает себя бессмертным или мозоли на руках не мешают жить, те могут чистить ir выхлоп LLVM, он прекрасно парсится. ![]() |
|
Создано: 10 июля 2018 21:05 · Личное сообщение · #26 |
|
Создано: 10 июля 2018 21:09 · Поправил: shellstorm · Личное сообщение · #27 difexacaw пишет: Покажите на реальном примере, повторяю вопрос. Я тебе уже назвал, смотри chrome в дизе, не моя проблема, что ты не можешь написать аналог, крутить в уме пару переменных это не сложно, а когда их тысячи, такие человеко ![]() ![]() |
|
Создано: 10 июля 2018 21:19 · Личное сообщение · #28 |
|
Создано: 10 июля 2018 21:23 · Личное сообщение · #29 |
|
Создано: 10 июля 2018 22:10 · Личное сообщение · #30 |
|
Создано: 10 июля 2018 22:18 · Личное сообщение · #31 shellstorm пишет: на момент создания и windows хейтили за слоупочность На момент создания Windows была оболочкой над MS-DOS, лол. На момент создания много что хэйтили за слоупочность. По-вашему, это связано с языком, а не с реализацией? shellstorm пишет: LLVM усреднил реализации языков, а в анализе ast многие дадут фору сишке. Это всё бессодержательный пиздёж, я пока не увидел ни одного конкретного доказательства в виде конкретных замеров времени выполнения. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
<< . 1 . 2 . 3 . 4 . 5 . >> |
![]() |
eXeL@B —› Программирование —› ByteToHex |