В сообщении от Суббота 16 октября 2010 18:20:39 автор Н. Артём написал:
> > > Затем, что они используются в скриптах инициализации, в правилах udev,
> > > во всех остальных скриптах. И т.д. Т.е., если с каждого будет
> > > небольшой, незаметный прирост, в сумме, теоретически, может кое-что
> > > набраться.
> >
> > Не должно.
>
> Почему?
>
> > > > > Они используются в скриптах. Повсеместно.
> > > >
> > > > Используются. А при чём тут использование процессорной мощности?
> > >
> > > См. выше. "Скорость работы", по-идее, может увеличиться?
> >
> > Пересобирать каждую новую версию придётся сильно дольше, чем выигранные
> > миллисекунды.
>
> Ну не так часто они и обновляются. А насчёт миллисекунд - вовсе не факт. В
> i386 нет даже MMX. Я не знаю как оптимизирует gcc, но множество операций,
> которые к мультимедиа никаким боком, гораздо быстрее исполняются, если их
> код генерируется с использованием команд MMX расширения. А уж если
> говорить о более новых расширениях... По-моему, тут нельзя без замеров
> однозначно сказать...
Вам не мерить всякую фигню надо, а почитать про векторные расширения.
Основной смысл этих расширений.
В процессор добавлены большие регистры (128бит и более) куда можно кинуть
много небольших переменных и за раз что-то с ними сделать. Допустим вы
складываете в цикле n-e кол-во 16битных целых. Программист может написать код,
который использует эту возможность. Этим он сделает вычисление быстрее, а
программу сложнее. Для числодробилок это усложнение необходимо и оправданно.
Ежели программист просто напишет плюсик, то в дело вступает компилятор. Ежели
компилятору скажут, что можно использовать mmx, sse и прочие векторные
расширения, то из программного кода он попытается вычленить те, куски, которые
можно векторизировать. Даже в простейшем случае, приведенном выше, компилятор
не будет знать что делать. А вдруг под кол-вом итераций (n) скрывается малое
число (1-15)? Компилятор, если возьмется векторизировать, должен отсечь кол-во
итераций меньше 8 и досчитывать их без расширений(или добивать нулями). Будет
работать этот код быстрее или медленнее - неизвестно. В реальном же коде если
программист не подстраивался под компилятор, то компилятор вообще почти ничего
не поймет. Запихнет эти инструкции в десятке-другом мест, причем с неизвестным
результатом.
Про зачатки векторизации в компиляторе gcc можно почитать сдесь
http://gcc.gnu.org/projects/tree-ssa/vectorization.html