Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите что плохого в этом проектировании 
:(
    Опции темы
UnrealMan
Дата 7.11.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Можешь по-русски внятно объяснить, что ты сейчас замерил и какие результаты получил?
PM MAIL   Вверх
MAKCim
Дата 7.11.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



times определяет системное время (время работы процесса в режиме ядра: обработка прерываний, системные вызовы) и пользовательское время (время работы процесса вне режима ядра, т. е то, что нам и нужно узнать)
нам необходимо пользовательское время
оно равно в первом случае 0 минут и 0.795 секунды
во втором - 0 минут и 0.601 секунды


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UnrealMan
Дата 7.11.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(MAKCim @  7.11.2007,  20:17 Найти цитируемый пост)
нам необходимо пользовательское время
оно равно в первом случае 0 минут и 0.795 секунды

Т.е. ты хочешь сказать, что время, затрачиваемое на выполнение вот этого кода

Цитата(MAKCim @ 7.11.2007,  19:48)
Код

    A * a1 = new B();
    return static_cast<int>(typeid(C) == typeid(*a1));


составляет чуть ли не секунду?



PM MAIL   Вверх
MAKCim
Дата 7.11.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



UnrealMan, 
нет
это совокупное время работы процесса вне режима ядра
которое включает в себя в частности время выполнения данного участка кода


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UnrealMan
Дата 7.11.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(MAKCim @  7.11.2007,  20:32 Найти цитируемый пост)
нет
это совокупное время работы процесса вне режима ядра
которое включает в себя в частности время выполнения данного участка кода

И сколько же времени затрачивается на выполнение данного участка кода (а ведь именно это нас интересует, не так ли?.. вернее, даже только часть этого участка, связанная с вычислением typeid и сравнением)?

Это сообщение отредактировал(а) UnrealMan - 7.11.2007, 20:38
PM MAIL   Вверх
MAKCim
Дата 7.11.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



UnrealMan, 
какая разница?
остальной код в обоих случаях идентичен
поэтому он не влияет на общий результат
грубо говоря
B + T1 = A1
B + T2 = A2
T1 - время выполнения участка кода в первом случае
T2 - во-втором
B - время выполнения остального кода
на B можно сократить, при этом общее время уменьшится на B
т. е относительный результат будут тем же, но общее время уменьшится


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UnrealMan
Дата 7.11.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(MAKCim @  7.11.2007,  20:49 Найти цитируемый пост)
грубо говоря
B + T1 = A1
B + T2 = A2
T1 - время выполнения участка кода в первом случае
T2 - во-втором
B - время выполнения остального кода
на B можно сократить, при этом общее время уменьшится на B
т. е относительный результат будут тем же

Твои познания в математике просто поражают smile


PM MAIL   Вверх
MAKCim
Дата 7.11.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(UnrealMan @  7.11.2007,  21:24 Найти цитируемый пост)
Твои познания в математике просто поражают

и в чем я не прав?
по существу можешь что-нибудь сказать?  smile 


Это сообщение отредактировал(а) MAKCim - 7.11.2007, 22:30


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 7.11.2007, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(MAKCim @  7.11.2007,  22:28 Найти цитируемый пост)
и в чем я не прав?

Думаю, в этом:
Цитата(UnrealMan @  7.11.2007,  21:24 Найти цитируемый пост)
B - время выполнения остального кода

"Остальной код" не обязан в обоих случаях выполняться одинаковое кол-во времени.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
UnrealMan
Дата 7.11.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(MAKCim @  7.11.2007,  22:28 Найти цитируемый пост)
и в чем я не прав?

Ты издеваешься что ли?

Цитата(MAKCim @  7.11.2007,  22:28 Найти цитируемый пост)
по существу можешь что-нибудь сказать?

Хорошо, скажу по существу. На современном компе typeid(С) == typeid(*a1) в среднем вычислится меньше, чем за микросекунду (результатов выполнения своего теста я ждал несколько секунд, а там по паре миллиардов итераций). Соответственно твои замеры одного-единственного вычисления (где время исчисляется миллисекундами smile) не просто не точны - они вообще никак не отражают производительность typeid и виртуального вызова.

Теперь немного о математике. С каких это пор слагаемые при делении стало возможным сокращать? smile


Это сообщение отредактировал(а) UnrealMan - 7.11.2007, 23:00
PM MAIL   Вверх
archimed7592
Дата 7.11.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(UnrealMan @  7.11.2007,  22:56 Найти цитируемый пост)
Теперь немного о математике. С каких это пор слагаемые при делении стало возможным сокращать? smile

Ты о вычитании уравнений что-нибудь слышал smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 7.11.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  7.11.2007,  22:34 Найти цитируемый пост)
"Остальной код" не обязан в обоих случаях выполняться одинаковое кол-во времени. 

почему нет?
times не зря возвращает системное и пользовательское время
системное время естественно различается (прерывания всегда асинхронны и недетерминированны)
а пользовательское постоянно, если в обоих случаях выполняется одинаковая последовательность действий (а она одинаковая)
только не надо говорить, что, дескать, частота ядра CPU может различается от опыта к опыту и т. д
она то может и различаться, только вот относительный результат всегда одинаков
Цитата(UnrealMan @  7.11.2007,  22:56 Найти цитируемый пост)
Ты издеваешься что ли?

отнюдь
Цитата(UnrealMan @  7.11.2007,  22:56 Найти цитируемый пост)
Соответственно твои замеры одного-единственного вычисления (где время исчисляется миллисекундами smile) не просто не точны - они вообще никак не отражают производительность typeid и виртуального вызова.

см. выше
Цитата(UnrealMan @  7.11.2007,  22:56 Найти цитируемый пост)
Теперь немного о математике. С каких это пор слагаемые при делении стало возможным сокращать?

к словам не надо придираться
сокращать = не учитывать

Добавлено через 2 минуты и 50 секунд
Цитата(UnrealMan @  7.11.2007,  22:56 Найти цитируемый пост)
На современном компе typeid(С) == typeid(*a1) в среднем вычислится меньше, чем за миллисекунду (результатов выполнения своего теста я ждал несколько секунд, а там по паре миллиардов итераций).

железная логика
если бы все мерилось итерациями цикла  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 7.11.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



UnrealMan, 
да, если уж на то пошло
давай я докажу, что результаты твоего теста нельзя принять за истину  smile  
Код

time = GetTickCount();
    for (long i=0; i<n; ++i)
    {
        if (typeid(base)!=typeid(Derived))
            return 0; // never return
    }
    t1 = GetTickCount() - time;
    time = GetTickCount();
    for (long i=0; i<n; ++i)
    {
        if (base.GetTypeId()!=&TypeInfo<Derived>::Id)
            return 0; // never return
    }
    t2 = GetTickCount() - time;

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



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UnrealMan
Дата 7.11.2007, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(archimed7592 @  7.11.2007,  23:02 Найти цитируемый пост)
Ты о вычитании уравнений что-нибудь слышал 

Исходя из этой фразы

Цитата(MAKCim @  7.11.2007,  20:49 Найти цитируемый пост)
т. е относительный результат будут тем же

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

Цитата(MAKCim @  7.11.2007,  23:09 Найти цитируемый пост)
если бы все мерилось итерациями цикла  

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

Цитата(MAKCim @  7.11.2007,  23:32 Найти цитируемый пост)
циклы большие по количеству итераций, а следовательно почему ты решил, что они будут выполняться атомарно? 

В том-то и дело, что важен средний результат. Погрешность тут, конечно же, возможна, но будет в пределах 10-25 процентов.
PM MAIL   Вверх
MAKCim
Дата 8.11.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(UnrealMan @  7.11.2007,  23:49 Найти цитируемый пост)
не видно, что имелось в виду решение системы уравнений. Но даже если составить систему уравнений, погрешность будет слишком велика. Ты-то хоть, я надеюсь, это понимаешь?

какая погрешность?
я же доходчиво (надеюсь) объяснил, что к чему
время остального кода B постоянно и times это гарантирует если этот остальной код не меняется, а он не меняется
меняются только вот эти части
Код

return static_cast<int>(a1 -> foo() == 2);

и
Код

return static_cast<int>(typeid(C) == typeid(*a1));

время их выполнения равно T1 и T2
общее время, полученное с помощью times равно A1 и A2 соответственно
чтобы получить T1 и T2 мы от A1 и A2 должны отнять B
при B -> 00, пропорции T1 / T2 и A1 / A2 не равны, но ассимптотически приближаются к 1
причем если T1 < T2, то справа, иначе - слева
но относительный результат (быстрее или медленнее) постоянен в не зависимости от B
а т. к B у нас постоянно, то и одного опыта достаточно для того, чтобы опровергнуть или доказать гипотезу

Это сообщение отредактировал(а) MAKCim - 8.11.2007, 00:32


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.