Тотальная оптимизация |
Здравствуйте, гость ( Вход | Регистрация )
Тотальная оптимизация |
RazrFalcon |
11.10.2010, 20:24
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Решил не плодить кучу меких тем и написать все в одной
1) При динамической линковке производительность меньше чем при статической? Как я понимаю да при статической все нужное от динам. либы войдет в бинарник. 2) Как собрать х64 приложение, есть Ubuntu 10.10 x64, только я не уверен (не знаю как проверить) что прога именно 64-х битная. Какие есть ключи для оптимизации, и есть ли они вообще. Где глянуть, пока кроме -static ничего не нашел.3) Какие еще есть методы увеличения производительности. Важна каждая миллисекунда. 4) Читал на тему того, что даже разные версии gcc влияют на производительность. Заранее спасибо. Сообщение отредактировал RazrFalcon - 11.10.2010, 20:27 |
|
|
Iron Bug |
12.10.2010, 8:17
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
компилятор icc (Intel) - производительность в полтора-два раза быстрее на любом(!) процессоре в любой системе. однозначно. даже по сравнению с gcc. для линюкса есть полная бесплатная версия icc. отличная вещь.
статическая линковка на современных системах никак не влияет на скорость доступа (каждый процесс крутится в своём пространстве и если линки не отложенные (LAZY), то линковка всех входов-выходов происходит один раз, при старте программы, дальше всё происходит стандартно, как при вызове любых других функций из адресного пространства процесса). лучшеее ускорение - отказ от виртуальных функций всех видов. вызовы через таблицы виртуальных методов тормозят работу. отказ от ввода-вывода любого плана (самое медленное в системах всех видов) и вынос ввода-вывода в отдельные малоприоритетные потоки, применение скоростных таймеров и системно-зависимых методов синхронизации. собственно, при использовании QT оптимизация может быть лишь относительной. у QT нет такой задачи. это кроссплатформенная библиотека и некоторые моменты могут быть вовсе не оптимальны. хотя на уровне миллисекунд может и проканает. это довольно медленное выполнение. только под вендой нужно юзать мультимедийные таймеры, если нужны тайминги и нельзя юзать стандартный Sleep - там очень большие интервалы (около 15 мс). Сообщение отредактировал Iron Bug - 12.10.2010, 9:03 |
|
|
Алексей1153 |
12.10.2010, 8:30
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
kwisp |
12.10.2010, 8:41
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Я вот книжку умную прочел, так там пишут что "хорошее знание предметной области" зачастую лучшая оптимизация.
Уровни оптимизации существуют различные. Начиная от проектирования, выбора языка, кодирования .возможно критичные участки кода на acm и проч и проч. и так далее к выбору компилятора изучения его уровней оптимизации, может под него кое-где и код придется переписать. |
|
|
Алексей1153 |
12.10.2010, 8:44
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
А ещё, нет смысла особо оптимизировать всё подряд в программе, если имеется хотя бы одно узкое по времени место Вот если это место удасться заоптимизировать до сравнимых с другими частями программы скоростей, тогда и
|
|
|
Iron Bug |
12.10.2010, 9:07
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
просто у меня большой опыт работы с риал-тайм программированием (собственно, моя основная работа и есть риал-тайм управление всяческими девайсами). я написала про то, что точно работает и работает эффективно. никакое "знание предметной области" не поможет, если компилятор хилый сам по себе. факт. никакое знание не поможет, если используются тормозные сторонние библиотеки. тоже не поспоришь.
так что тут надо выбирать: жёсткий риалтайм и скорость, или кроссплатформа и удобство программирования. это несовместимые в принципе вещи. надо выбирать нужный для себя уровень где-то между этими крайностями и чем-то жертвовать. |
|
|
kwisp |
12.10.2010, 9:08
Сообщение
#7
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
RazrFalcon,
ты собираешься вопросы задавать про оптимизацию в Qt? по-моему тему нужно перенести из Раздела Qt.Общие вопросы |
|
|
Iron Bug |
12.10.2010, 9:21
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
А ещё, нет смысла особо оптимизировать всё подряд в программе, если имеется хотя бы одно узкое по времени место Вот если это место удасться заоптимизировать до сравнимых с другими частями программы скоростей, тогда и ну, тут не поспоришь. но иногда найти это узкое место иногда довольно сложно. |
|
|
kwisp |
12.10.2010, 9:27
Сообщение
#9
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
никакое "знание предметной области" не поможет, если компилятор хилый сам по себе. факт. точно так же могу написать что никакой компилятор не поможет если в программу включишь кучу лишнего, вплоть до дохлых циклов. Он лишь автоматизирует и оптимизирует уже допущенные ошибки. "Знание предметной области" это прежде всего то - что ты делаешь и оптимизирует это при прочих хороших условиях в том числе и хорошем компиляторе. |
|
|
CodeHunter |
12.10.2010, 9:29
Сообщение
#10
|
Студент Группа: Участник Сообщений: 33 Регистрация: 26.8.2010 Пользователь №: 1982 Спасибо сказали: 1 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 28.12.2024, 10:00 |