LINUX.ORG.RU

Хислей Филипп. Генерация высококачественного кода для программ, написанных на СИ

h
()

Видал я Си с ассемблерными вставками. Непортабельное глюкалово. За это расстреливать нужно.

ТС, постарайся обойтись чистым Си + опциями компиляции. Компилируешь , смотришь что за ассемблер получился у компилятора, меняешь свой код / опции компиляции, и так до тех пор, пока не будет приличного результата.

Если без ассемблера совсем никак, то лучше сделай отдельный .S-файл с г7олым ассемблером, без Сишечки.

Только не смешивай их, пожалуйста.

anonymous
()
Ответ на: комментарий от anonymous

лучше сделай отдельный .S-файл с г7олым ассемблером, без Сишечки.

Поддерживаю. Во-первых, будет запасная переносимая реализация. А во-вторых, это будет ещё и эталонная реализация, по которой можно понять и проверить ассемблерный мрак и ужас в соседнем файле.

const86 ★★★★★
()
Ответ на: комментарий от Zodd

Так ТС наверное имел в виду всякие SSE/MMX/NEON/VFP и прочие SIMD расширения для ЦОС, например. Которые только ассемблером и сделаешь. Или интринзиками, которые также непортабельны и генерят неэффективный код. Ясно, что обычный код типа циклов/копирования памяти либо нет смысла оптимизировать, либо это уже сделано в libc

anonymous
()
Ответ на: комментарий от Zodd

Не так все очевидно, SIMD extension ... Однока можно пользоваться Intrinsics (хоть немного переносимо)

kdev
()
Ответ на: комментарий от anonymous

gcc вроде умел генерить код с SSE, когда нужно. Для !x86 архитектур всё более печально с другой стороны.

anonymous
()
Ответ на: комментарий от anonymous

-ftree-vectorize? оно бестолково, насколько я смотрел

anonymous
()
Ответ на: комментарий от anonymous

Да, наверное SSE/MMX были бы полезны для моей задачи. Но я ещё детально не смотрел.

pacify ★★★★★
() автор топика
Ответ на: комментарий от anonymous

ТС наверное имел в виду всякие SSE/MMX/NEON/VFP и прочие SIMD расширения

Уверен, что в таком случае для задачи ТС уже есть нужная либа.

buddhist ★★★★★
()
Ответ на: комментарий от dimon555

может начнёшь с openmp?

Была такая мысль. Но мы пока решили остановиться на однопроцессном/однопроцессорном варианте вычислений. Отладимся - надо будет оптимизировать.

pacify ★★★★★
() автор топика

Крис Касперски,

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

Harald ★★★★★
()
Ответ на: комментарий от anonymous

ТС, постарайся обойтись чистым Си + опциями компиляции.
Компилируешь , смотришь что за ассемблер получился у компилятора

Я не настолько крут, чтобы смотреть ассемблер в AT&T нотации. Привык к MASM/TASM для i80286.

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

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.