![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
wolver17 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.5.2011 Репутация: нет Всего: 1 |
Пытался сделать небольшую прогу, которая бы показывала сколько времени (или тактов процессора - не важно) считает цикл в обычном его представлении и с развёртыванием согласно методу увеличения скалярного параллелизма - методу планирования трасс.
Согласно теории: tпар =tпосл/(1+0,15*w), где tпар и tпосл – времена параллельного и последовательного исполнения одного и того же отрезка программы, w – число команд в программе. Но если проклацать 5-6 раз кнопку ОК и замерить время tпосл (напр. показало ~57000 средне), то согласно формулы tпар должно показать при w=5000 в 750 раз меньше и = ~76. А на самом деле прога показывает в 2-3 раза больше чем tпосл!(( Почему так? И где проблема? p.s.: файлы проекта во вложениях + скрин-мануал по параллелизму. Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
Cuboid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 12.4.2015 Репутация: нет Всего: нет |
А чем GetTickCount64 (или, если позарез нужна суперточность, QueryPerformanceCounter) не устраивает?
|
|||
|
||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 1 Всего: 12 |
||||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
rdtsc вроде как на каждом ядре свой, так что для точного расчета следует привязать поток к ядру ну или воспользоваться QueryPerformanceCounter . В документации Microsoft указывается что QueryPerformanceCounter почти всегда работает правильно, кроме некоторых ситуаций с драйверами.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
> tпар должно показать при w=5000 в 750 раз меньше
Ну, Вы, батенька, оптимист... с чего это??? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Компилятор (даже у Borland'а) сам умеет хорошо разматывать циклы. Причем он это делает с учетом характеристик процессора (например размера кэшей) а не тупо в 5000 раз (как у вас)
Раскрутка на 5000 в вашем случае - это явно перебор Это сообщение отредактировал(а) xvr - 6.7.2016, 14:59 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |