Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Музыка в С++ |
Философия, технологии, алгоритмы! |
|
Опции темы |
16.08.2011, 16:21 | #31 | |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Цитата:
Ага, ага, особенно работа со строками :-*, например. |
|
16.08.2011, 16:33 | #33 |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Сравниваем:
и И между тем, что вы, Spectator, игнорируете то, что этот код лишен смысла, потому что не определены ни lpDDSBack, ни DDS_Blt |
16.08.2011, 16:37 | #34 | |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
|
|
16.08.2011, 16:51 | #35 | |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Цитата:
И при том, что в производительности такой код нисколько не выигрывает, он в 4! раза больше и практически не понятен без коментариев. |
|
16.08.2011, 17:33 | #36 | ||
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Идем дальше вверх - с чего мы начали изначально разговор. Мои слова Цитата:
И мы приходим к следующему тезису - если скорость работы какого-либо алгоритма (заметь, не программы, поскольку есть такая замечательная вещь как встроенный ассемблер) или части этого алгоритма важнее скорости написания этого алгоритма (т.е. писать 1 либо 2, но даже 30% прирост скорости не помешает, а обычно это бывает гораздо больший прирост) то "компилировать" функции "вручную" выгодно и полезно. На практике вполне реально добиться 1000% прироста по сравнению с самым лучшим оптимизирующим компилятором, или можно оптимизировать код на С++, поняв, после просмотра полученного кода, что именно привело к тормозам. |
||
16.08.2011, 17:52 | #37 |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
|
16.08.2011, 19:07 | #38 | ||
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Зри в корень, как говориться! Цитата:
Кстати, 1000% чего? Что это за мифический коэффициент? |
||
16.08.2011, 21:04 | #39 | |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Ну, собственно, вот http://ru.wikipedia.org/wiki/Кэш_процессора Так вот, на асме, путем небольшого шаманства и контроля ты можешь добиться (и - что важнее гарантировать вне зависимости от настроек компилятора и прочих внешних параметров) что у тебя и код и данные будут выровнены по границе страниц памяти (ну, на это современные компиляторы способны вполне - но, как я уже говорил, знать ассемблер надо уже для того чтобы понимать как работает компилятор до мелочей, и понимать зачем нужны какие настройки и на что они повлияют в итоговом коде). Важнее понимать как работакт кэш кода. И оптимизировать функции под этот самый кэш. Поскольку это за тебя компилятор при всем желании не сделает, и при изменении настроек или малейшем изменении код вылезет за пределы кэша и всё. Ты не определишь и не поймешь даже что произошло. Для всего этого нужно хотя бы ЗНАТЬ ассемблер и понимать архитектуру процессора. Небольшой пример, чтобы стало понятнее - алгоритмы сортировки, обычные, виртовкие и кнутовские в зависимости от конкретных процессоров работают более и менее эффективнее. На 486 процессорах эффективнее были одни алгоритмы, сегодня - другие, поскольку сегодня крайне важно чтобы алгоритм как можно больше времени проводил в пределах размера кэша. Потому если сравнивать две простейшие и сравнимые по скорости сортировки - выборкой и пузырьковую, то сегодня выгоднее будет пузырьковая, за счет того что процессор будет совершать меньше ошибок кэша. И еще насчет сложности разработки на асме. Это крайне преувеличено. Его надо а) один раз изучить, один раз б) применять следующим образом - скопировать при отладке код, который создал компилятор, превратить его в ассемблерную вставку, изучить на предмет мест где компилятор слажал, исправить эти места. Аналогично - профилирование сишного кода обычно дает не так много. Зато если посмотреть на конкретные ассемблерные команды, которые пожирают большую часть времени процессора, и подумать - а можно ли, например, изменить тип данных, чтобы конкретная "тугая" ассемблерная команда была заменена на другую? Никто же не предлагает разрабатывать функцию на экран сишного кода с нуля на ассемблере, это при сегодняшних объемах бред полнейший. Как то так (с) |
|
16.08.2011, 21:08 | #40 | |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
|
|
16.08.2011, 21:15 | #41 |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Spectator, все это голословные домыслы. Я даже намекну как может выглядеть пруф. Берем алгоритм, одну реализацию делаем на С, другую - на Асм, сравниваем скорость выполнения потом, а все остальное - это сферическое в вакууме.
|
16.08.2011, 21:41 | #42 | |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Я как то оптимизировал два экрана сишного кода несколько месяцев, поскольку это был ключевой алгоритм программы, который изначально работал слишком долго, кроме того были ограничения на разумное время его работы, а алгоритм был так устроен, что сделать его идеально невозможно. (одна из так называемых NP-полная задач). Там в ход шло всё, малейший выигрыш скорости в любом участке цикла приводил к серьезному увеличению общей скорости, поскольку на решение зависит от количества входных данных полиномиально и математически изменить алгоритм невозможно в рамках существующей научной мысли. |
|
16.08.2011, 22:50 | #43 | |
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Цитата:
|
|
16.08.2011, 23:07 | #44 | |||
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Т.е. ты не знаешь какую именно характеристику ты будешь оптимизировать?
Ты тут холивар пытаешься развести по типу, C VS ASM? Цитата:
Цитата:
Интел для них даже библиотеку выпустил. Цитата:
На практике если программа будет запускаться один-два раза, то проще подождать пока она считает. Если будет использоваться часто, покупают хорошее железо Хочешь сказать что 3D Max есть в сверх оптимизированном варианте для слабых компьютеров где нужно считать сложные сцены? Или Гидрометеоцентр использует суперкомпьютеры для своих вычислений просто потому-что им так хочеться. Написал бы ихним админам и программистам про свою оптимизацию на асме. Оптимизация это конечно хорошо, но не засчёт уродования кода непонятными вставками. Ты же в дальнейшем будешь код дорабатывать или что вовсе нежелательно искать ошибки. А если это произойдёт через полгодика, плюс комментов не будет. Как быстро ты внесёшь изменения? Все гениальное просто(с) |
|||
16.08.2011, 23:12 | #46 |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
На входе - геометрия всех фигур (коих может быть порядка тысячи запросто) на выходе - укладка их на листах (заранее заданных размеров, в идеале - неравной формы, т.е. не обязательно одинаковой ширины / высоты, а то и вообще больших обрезков с заданной координатами геометрией). На выходе - конкретный ход плазменного резака с точными координатами, для каждого листа, с оптимизацией а) количества листов б) площади размеров боковых отходов листов (т.е. ширина * высоту отходов должна стремиться к максимуму, при том что общее количество листов должно стремиться к минимуму, последнее приоритетно). Между любыми двумя точками вырезаемых фигур должно быть конкретное растояние (минимальное). в) общего пути хода резака с минимизацией углов поворота, подъемов и опусканий (это влияет на скорость процесса резки) |
16.08.2011, 23:27 | #47 |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Hopkroft, твой героический высер я комментировать целиком не буду.
Ограничусь этим. Практика бывает крайне разной. Например - рендер сцены в трехмерных играх 25 раз в секунду. |
16.08.2011, 23:40 | #48 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Так что у кого на что мозгов хватает. У кого-то 2 недели код оптимизировать с помощью ассемблера (и потом гнуть пальцы на форуме), а у кого-то придумать новый подход. Хотя если тебе яйца зажали сроками и новое решение в голову не идёт, то тут что угодно делать начнёшь. Но только после этого не надо говорить, что всё нужно писать на асме т.к. тебя это раз спасло. Уверен что и в подобном случае было более лучшее решение. |
|
16.08.2011, 23:47 | #49 |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Да, в последнем случае (я про игры) сегодня оптимизируют уже не на уровне даже CPU (и вариантов CPU - интел там или амд, а на уровне конкретных видеокарт с их шейдерами).
Я с шейдерами конкретно не очень знаком, но насколько мне хватило интереса - это, по сути, ассемблер для GPU (http://en.wikipedia.org/wiki/Graphics_processing_unit), процессоров, установленных в видеокартах. Можно на досуге попрограммировать их на дельфях и задуматься о добром и вечном))) |
16.08.2011, 23:53 | #50 | |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
давай без "чудиков", я, вообще не хочу что-то кому то доказать, потому оскорбить меня сложно, если не сказать - невозможно, но - неприятно.
Цитата:
Дальнейший высер опустим, мне уже искренне поднадоело элементарные вещи разжевывать))) |
|
17.08.2011, 00:02 | #51 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
З.Ы. К софтинке ты тоже приложил руку? Или просто русский аналог писал? |
|
17.08.2011, 00:12 | #52 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Quake_engine Ну тебе же разжёвывали, вот и ты хоть раз бы потрудился. |
|
17.08.2011, 00:18 | #53 | ||
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
а дельфи для меня - эталон дерьма, поскольку появилась первой среди подобных говнопродуктов. Я этот момент вполне застал. все остальные RAD среды так или иначе копируют концепцию дельфей. Цитата:
По разным причинам - большая востребованность фиттингов и использование металла (в основном - жести) для их производства. У нас пока эта промышленность развита сравнительно слабо. |
||
17.08.2011, 00:24 | #54 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Наверное как всегда некогда разжёвывать истинные причины? Ну что-же это твоё мнение, так что пусть оно таким и останется. |
|
17.08.2011, 09:26 | #55 | |||
Форумец
Сообщений: 248
Регистрация: 17.01.2005
Не в сети |
Цитата:
Цитата:
Цитата:
Ну, видимо, стыдно писать, что после того как пришел студент третьекурсник и сделал за 8 часов в Delphi, то что Spectator 2 месяца нежно "оптимизировал" на ассемблере, его, Spectatorа, попросили проследовать на... Вот так и появилась ненависть ко всяким RAD А, вообще, Hopkroft, глупо требовать обоснований постов от Spectatorа, он это не практикует, как говорится "за слова не отвечает" |
|||
17.08.2011, 09:30 | #56 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Вчера было некогда писать, спрошу сейчас. Про решение NP-полных задач можешь посмотреть в книге Вычислительные машины и труднорешаемые задачи. И если предложенные там методы тебе не подходят то это не значит что с помощью них нельзя решать.
По поводу применения суперкомпьютеров и распараллеливания в литературе по параллельным и распределённым вычислениям. В интернете полно информации, где подробно описываются приведённые мною методы. И применение этих вещей вполне обоснованно. Так где твои аргументы что это на практике не работает? Или не хочешь сливать очередную тему. З.Ы. В ссылке на твои рисунке есть софтина, где написано что она может использовать несколько ядер. Один из подходов для использования нескольких ядер, является распараллеливание задачи и создание многопоточных вычислений. У тебя же написано что ты работал с кэшем(в многоядерной архитектуре он вроде как у каждого ядра свой), каким именно кэшем ты работал. Может ты не том концентрировался. И нужно было использовать распараллеливание, как я тебе предлагал, и юзать многоядерные процы, как рекомендуют в описании программы. Приводи нормальные аргументы, ты же программист блин Последний раз редактировалось Hopkroft; 17.08.2011 в 09:54. |
17.08.2011, 10:02 | #57 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Это я уже понял Просто думал, что он вот-вот откроет тайну своей крутизны, видать не дождусь. |
|
17.08.2011, 10:32 | #58 |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
17.08.2011, 10:34 | #59 |
Форумец
Сообщений: 40,090
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Ты не посмотри. Ты прочитай. И не только эту книгу. Я только в процессе решения вышеозначенной задачи кучу подобной литературы перелопатил.
|
17.08.2011, 10:40 | #60 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
Ты смотрел рекомендуемые требования к буржуйской софтинке? там рекомендуют юзать хорошую аппаратку. Т.е. программист заложил возможность использования распараллеливания Видишь, кто-то это юзает. |
|