Re: Blitz++, G++ и operator()
От: Andrew S Россия http://alchemy-lab.com
Дата: 11.04.09 21:51
Оценка:
_>Как видно из приведенного выше, оптимизатор от студии великолепно справился со
_>своей задачей и создал почти идентичный код для обоих контейнеров. Чего нельзя
_>сказать о G++, код для std::vector у него получился вполне приличный, а вот с
_>blitz::Array у него вышла какая-то не реальная хрень. Я не большой знаток
_>AT&T-шного синтаксиса, но помоему творится там какая-то муть.

_>Посему, хотелось бы услышать мнение общественности.


Доброго времени суток. Честно говоря, не очень понятно, что вы хотите услышать? Да, gcc сгенерил неоптимальный (мягко говоря) код для array. Например, он вычисляет адрес ячейки с использованием умножения, что иногда сравнимо по стоимости с записью в память. Ну и плюсом "лишние" вычисления адреса (аналог nop для выравнивания) в данном случае не совсем нужны, поскольку составляют примерно половину тела цикла (за исключением impul) по тактам. Как говорится, старался, но ...

Как это поправить — очевидно, посмотреть, чем отличаются array и vector для gcc. И поправить array таким образом, чтобы соответствовало.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.