сравнение времени выполнения операций процессором

molochnik

требуется сравнить время затрачиваемое процессором на перезапись и на сложение. Посоветуйте статьи с результатами, ну или в крайнем случае как это можно самому сравнить средствами C++&

lubanj

я так скажу. хрен с два что у тебя выйдет оценить из-за всяких разных кешей и конвейеров

lubanj

в первом приближении (очень тупо, получая ошибку в разы и на порядки мог бы сделать и так:
делаешь некий цикл на миллиард операций. засекаешь время. (секундомером :grin: )
потом добавляешь в цикл лишнюю операцию сложения. снова засекаешь. вычитаешь
неужели так сложно было придумать подобную схему эксперимента?

salamander

Посоветуйте статьи с результатами
Тогда нужно как минимум писать, что за процессор ты используешь.
время затрачиваемое процессором
Время до того момента, когда устройство выборки команд возьмется за следующую инструкцию? Или время до того момента, когда результат операции можно будет использовать?
на перезапись и на сложение
Перезапись чего и сложение чего?

molochnik

в первом приближении (очень тупо, получая ошибку в разы и на порядки мог бы сделать и так:
делаешь некий цикл на миллиард операций. засекаешь время. (секундомером :grin: )
потом добавляешь в цикл лишнюю операцию сложения. снова засекаешь. вычитаешь
неужели так сложно было придумать подобную схему эксперимента?

Теоретически то да, но при этом результаты получаются шокирующие: при добавлении 2х операций сложения добавка во времени (относительно пустого цикла) более чем в 2 раза больше, чем при добавлении одной операции. при добавлении 3х и 4х операций аналогичный эффект: время растет несоразмерно.

lubanj

взботни для начала.
http://habrahabr.ru/blogs/development/93263/
потом почитай еще где-нибудь как примерно работает конвейер у процессора.
а потом узнай че-нить про оптимизации компиляторов. которые выкидывают нафиг твой пустой цикл

margadon

без указания архитектуры и самого кода теста тут нечего говорить
показывай

lubanj

самого кода теста
надеюсь, имеется ввиду ассемблерный вид

margadon

желательно, но в общем - хотя бы С++ - посмотреть что за команды вызывают увеличение в 2 раза
вдруг он в этой команде в память лезет а не в регистрах копается?

okis

затрачиваемое процессором на перезапись и на сложение
перезапись куда? в память — это уже не совсем процессор.
в некоторых биосах можно отключить кэш процессора. Далее, нужно взять компилятор без оптимизации (чтобы получить именно инструкцию add некоторый цикл (надо придумать, какой убрать из него операцию add и через rdtsc измерить время с циклом и без. Вычесть, поделить. Возможно, стоит как-то избежать взаимодействия с памятью во время измерения.

Andbar

делаешь некий цикл на миллиард операций. засекаешь время. (секундомером :grin: )
потом добавляешь в цикл лишнюю операцию сложения. снова засекаешь. вычитаешь
как ты при этом докажешь, что не попал на какую-то особенность связанную с размером очереди команд и т.п.?

lubanj

ты пост выше читал? ну а хотя бы начало цитируемого поста?

Vadim69

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

Serab

взботни для начала.
И еще это: :)
Блин, мазовую ты ссылку дал, кстати :)

Andbar

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

molochnik

всем спасибо, особенно за первую ссылку. Проблема можно считать решена (в ее непригодности к реальным задачам я не сомневался, но от меня все же требовали ее решение).
Оставить комментарий
Имя или ник:
Комментарий: