LINUX.ORG.RU

Как писать на Си?

 


3

4

Возник такой вопрос в ходе эксперимента. Захотелось просто ради интереса написать перемножение матриц на Си и сравнить с чужой реализацией. Написал, начал сравнивать увидел, что мой вариант сильно медленнее, подглядел в чужом коде транспонирование матрицы перед умножением, добавил, начал сравнивать снова. И заметил интересный момент мой вариант и вариант attractivechaos с одинаковыми оптимизациями выполняются за примерно одно и то же время(ещё бы, после того как я подглядел транспонирование разница в коде стала минимальной). За исключением варианта -Ofast или комбинации -O3 и -ffast-math. Тут вариант attractivechaos ускоряется в 2 раза по сравнению с -O2 и -ffast-math, а мой нет.

Собственно вопрос: почему? И ещё более интересный: где почитать о том как писать код для наиболее эффективной оптимизации компилятором?

P.S. тестил и GCC, и Clang. Результат и там, и там одинаковый.

★★

Последнее исправление: andalevor (всего исправлений: 1)

Ответ на: комментарий от bormant

Да, вы, конечно, правы. Что-то я запутался. Несколько раз менял туда-сюда и запутался с буквами. Спасибо, что поправили, теперь время совпадает.

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

Идентичны они, так говорит нам стандарт.

Если вам нравится выглядеть тупым, то — на здоровье. Я то при чём? Всего вам наилучшего.

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

Ты что, даже k&r не открывал ни разу?

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

так как это самодокументируемость кода, указывающая на особенность реализации.

Тут матрицы множатся а не низкоуровщина пишется.

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

Никто в своем уме не будет на [censored] ржавчине делать математику!

На сишке тоже - там ни шаблонов выражений, ни даже человеческих контейнеров нет </trololo>

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от annulen

Плохо троллишь. На С полным-полно математических пакетов. Понятно, что часть — переделки с фортрана, но все же!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

Тут матрицы множатся

Именно. Потому запись A[offset] означает математически - работа с вектором.

а не низкоуровщина пишется.

Вот-вот, лишь бы ляпнуть чего-то хамское, но как обычно пальцем в жопу.

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

У фортрана не такой приятный синтаксис, как у С. Вот и всего. Поэтому я пишу на С.

Да и под всякие микроконтроллеры как-то компиляторов фортрана не встречал...

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

А у тебя на мк расчеты математические?

Да и под всякие микроконтроллеры как-то компиляторов фортрана не встречал...

gcc)

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

У фортрана не такой приятный синтаксис, как у С

Вкусовщина. Тебе вот приятный, ты на нем за много лет набил шишек и теперь умеешь пользоваться, а для человека-не-системного-программиста, которому нужно посчитать, этот язык сулит трах с указателями, отсутствие встроенных массивов и строк в языке, в результате на первых порах все будет течь и падать и требовать кучу времени на отладку.

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

Ну и нефиг лезть в погромизм, если несчастный указатель вызывает страх! И не надо мне байки рассказывать, что в С нет массивов и строк! Что за бред голимый?

А тем, кто еще и консольку боится, за компьютером вообще ловить нечего!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от annulen

ты на нем за много лет набил шишек и теперь умеешь пользоваться

Так не набил и не умеет. В репах кошмар. Просто ему это норма.

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