Comments 22
Самый новогодний программерский пост! :)
А вот эти «такты» — это окргугление попугаев по среднему? Просто слабо представляется работа clock_gettime на таких промежутках времени в многозадачной ОС (ведь многозадачной?)
А так спасибо за пост.
А так спасибо за пост.
Такты = наносекунды *3.2
У меня много ядер. Вообще, есть предпосылки считать, что это именно такты. Большинство значений получились круглыми + 0,04 (остаток от временной доли обвязки после деления). Я эти 0,04 отовсюду вычел.
У меня много ядер. Вообще, есть предпосылки считать, что это именно такты. Большинство значений получились круглыми + 0,04 (остаток от временной доли обвязки после деления). Я эти 0,04 отовсюду вычел.
Во-первых спасибо за хороший пост, во-вторых — оптимизация за счет инлайнов — это уже какой-то прошлый век, ИМХО.
Вот про оптимизацию циклов чуть по методу Loop-invariant Code Motion + про инлайны в комментариях:
blogerator.ru/page/zametki-ob-optimizacii-programm-1-loop-invariant-code-motion-licm-singleton-i-optimizacija-funkcij
Вот про оптимизацию циклов чуть по методу Loop-invariant Code Motion + про инлайны в комментариях:
blogerator.ru/page/zametki-ob-optimizacii-programm-1-loop-invariant-code-motion-licm-singleton-i-optimizacija-funkcij
Ухх, было дело, помню-помню, такой же велосипед писал.
Да, мне тоже всегда было интересно. Версии GMP всегда меня по производительности уделывали, но оно и понятно — в документации сказано, что библиотека при компиляции умеет определять множество разных процессоров и соответствующим образом выбирать исходник.
Кстати, система Mathematica использует какую-то свою версию GMP, потому, что она, в свою очередь, уделывает собранный мной GMP. Что, кстати, удивительно, ведь я-то собираю на целевой машине, а WR вынуждены собирать универсально.
Кстати, система Mathematica использует какую-то свою версию GMP, потому, что она, в свою очередь, уделывает собранный мной GMP. Что, кстати, удивительно, ведь я-то собираю на целевой машине, а WR вынуждены собирать универсально.
Я его ее не померил. Будет чем первого заняться :)
* ее даже
Буду ждать более подробную статью со сравнением с GMP.
Кстати, неплохо было бы еще разобраться с умножением и делением. Вот тут настоящий челендж вам, а сложение так, фигня :)
Кстати, неплохо было бы еще разобраться с умножением и делением. Вот тут настоящий челендж вам, а сложение так, фигня :)
По поводу умножения — у меня помнится на x86 катастрофически нехватало регистра. Там же, если делать столбиком, необходимо хранить 2 счетчика цикла. Ух, как я мучался, помню… Хотя это наверное потому, что ассемблер я довольно ознакомительно знаю.
Кстати, по поводу gcc версии. Вы, наверное, зря циклы переделывали из индексной формы в хитрые операции с указателями — компилятору сложнее оптимизировать код в этом случае. Возможно, если бы вы переписали код более высокоуровнево, получилось бы даже быстрее.
а можно на код полностью взглянуть, пожалуйста?
Кстати, это походу последний пост в 2011 году по местному времени.
С наступившим всех.
С наступившим всех.
Респект за умелое использование constraints в inline assembly.
UFO just landed and posted this here
Sign up to leave a comment.
Оптимизация длинной арифметики на C++