Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Visual Studio 2003 vs 2005. Почему быстрее? |
Автор: Master01 29.3.2009, 00:05 |
Всем доброго времени суток ![]() Кто-нибудь может подсказать почему одно и то же приложение, будучи откомпилированным с использованием Visual Studio 2003 работает быстрее чем то же самое приложение, откомпилированное под VS2005? Причём замедление более чем существенно, вот результаты замера времени работы: VS2003 - среднее по 20 прогонам 179 ms 142 мс VS2005 - среднее по 20 прогонам 142 ms 179 мс т.е. порядка 20%! Программа триангулирует заданные сложный полигон (полигон, содержащий дырки) и потом сливает триугольники в выпуклые полигоны, т.е. не использует каких-то ресурсов системы, API и пр. т.е. восновном одна выч. геометрия. Каких-то мега сторонних библиотек тоже не использует. очень хотелось бы понять это глюки у меня? у компиллера 2005 студии? или у нас обоих? я слыхал про что-то вроде managed кода, но вот неужели возможно такое замедление? Заранее спасибо всем. ПС. время замерял при помощи timeGetTime что в winmm.dll храниться. |
Автор: Alca 29.3.2009, 00:47 | ||
179 > 142 ? |
Автор: Master01 29.3.2009, 11:50 |
Пардон. моя ошибка. Уже поправил |
Автор: GoldFinch 29.3.2009, 12:02 |
Master01, сравни асм листинги |
Автор: Master01 29.3.2009, 12:14 |
GoldFinch, боюсь это нереально. Откомпиленная dll весит почти 500кб. т.е. просматривать её в асм коде весьма сложно. хотя не знаю может профайлером как-то... на самом деле не ожидал услышать конкретную причину именно для моего кода. Прсто может в 2005 заложенно что-то такое о чём я не знаю и что и является причиной этого замедления... какая-нибудь очередная мега идея Microsoft. |
Автор: GoldFinch 29.3.2009, 12:21 |
Master01, экспортируй функции которые проверяешь на быстродействие и смотри их листинг а вообще скорей всего у тебя опции компиляции разные |
Автор: Master01 29.3.2009, 12:48 |
GoldFinch, здесь вся dll - один здоровый механизм (COM-компонент) - при выполнении основного метода Normilize задействуется вся система, т.е. отдельные методы по отдельности нет смысла рассматривать. я, конечно, понимаю, что исследование асм кода пролило бы свет на происходящие, но там, правда, кода будет море, плюс весьма сложная архитектура (не запутанная, а сложная ![]() ![]() а что за опции компиляции? Я ничего не изменял - ни в 2003 ни в 2005. Вообще, писал на 2003 более года потом решил 2005 поставить, поставил, всё замечательно конвертнулось, откомпиллилось с 1го раза! но вот замер скорости работы меня расстроил... вообщем, если копание в асм коде - единственное средство, то наверно я это дело оставлю... всё рано уже 2003 назад вернул ![]() |
Автор: GoldFinch 29.3.2009, 13:01 |
Master01, опции компиляции - это опции компиляции, может у тебя в 2005 настройки для дебага, а в 2003 настройки для релиза или в 2005 включены все возможные рантайм проверки, а в 2003 нет, или в 2003 выбрана оптимизация по скорости |
Автор: Master01 29.3.2009, 14:35 |
GoldFinch, я, если честно, больше ожидал услышать, какие это именно ключи и где это смотреть... а ответ вроде - "опции компилляции - это опции компиляции" doesn't help much. хотя, в любом случае, спасибо. |
Автор: GoldFinch 29.3.2009, 15:02 |
проект -> свойства (alt-F7) -> компилятор |
Автор: jonie 29.3.2009, 17:01 |
CRT "безопасная" ?) http://msdn.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx |
Автор: chaos 30.3.2009, 09:33 |
вот люди а ![]() ![]() ИМХО скорость компиляции упала - это не говорит о том что стало хуже, мне кажется что на оборот стало лучше - оптимизаторы там всякие и тп. |
Автор: Lazin 30.3.2009, 09:43 |
#define _SECURE_SCL 0 а лучше в опции проекта добавить |
Автор: GoldFinch 30.3.2009, 10:11 |
chaos, не скорость компиляции, а скорость работы программы |
Автор: Master01 30.3.2009, 21:34 |
Сhaos, GoldFinch прав - речь не о времени компиляции, а о времени выполнения программы. всем спасибо за ответы! Сейчас просто нет времени с этим разбираться, но, думаю на недели проверю и отпишу о результатах. спасибо. |
Автор: Ivanovich 31.3.2009, 04:26 | ||
у VS2005 в отличии от VS2003 обращения к vector типа v[i] по умолчанию идут как будто v.at(i) , т.е. с проверкой диапазонов.
отключает проверки. Это же микрософт, так что не удивляйтесь. |