Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 36 • Страница 2 из 2<  1  2
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 24.08.2011
Откуда: Volgograd
dE fENDER писал(а):
Industrialice писал(а):
Но призыв отказаться от оптимизиции слышу впервые.

Для продвинутых есть третье правило оптимизации. "Не оптимизируй. Пока...". Но оно не для этой темы. А первые два лучше распечатать и принимать как аксиому.

А вот эти строки - как закон:
А. Александреску, Стандарты программирования на C++. 101 правило и рекомендация писал(а):
Пока необходимость оптимизации не доказана— вашим приоритетом №1 должно быть написание кода для человека. (Если кто-то потребует от вас оптимизации кода — потребуйте доказательств необходимости этого.)


Также не забывать о таком правиле - "Не пессимизируйте преждевременно".

Industrialice писал(а):
P.S. Вот вам обратный словам мелко$офтовского быдло-кодера пример:...


Это не обратный пример.
Во-первых:
С. Макконнелл, Совершенный код писал(а):
Оптимизацией кода (code tuning)... называют изменение корректного кода, направленное на повышение его эффективности. "Оптимизация" подразумевает внесение небольших изменений, затрагивающих один класс, один метод, а чаще всего - несколько строк кода. Крупномасштабные изменения проекта или другие высокоуровневые способы повышения производительности оптимизацией не считаются.

И в главных - там нарушались технические требования к реализации.

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

Опять же ИМХО, ну мож я и не прав, но получаетси,что...
Эт просто убыстрилизация действия, а не оптимизация, млин вроде все правильно втыкаю...

_________________
-=AMD POWER FAN CLUB=- http://forums.tophardware.ru
Обычно от огня бегут, а огнеборцы в него лезут... :-)



Партнер
 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
dE fENDER писал(а):
С. Макконнелл, Совершенный код писал(а):
Оптимизацией кода (code tuning)... называют изменение корректного кода, направленное на повышение его эффективности. "Оптимизация" подразумевает внесение небольших изменений, затрагивающих один класс, один метод, а чаще всего - несколько строк кода. Крупномасштабные изменения проекта или другие высокоуровневые способы повышения производительности оптимизацией не считаются.

Макконелла читал, но с этой фразой не соглашусь. Не соглашусь по крайней мере с тем, как она звучит в русском варианте. На нешем языке оптимизацию можно разделить по масштабу - глобальная, локальная... Если у меня в 3д-движке изначально использовался массив указателей на функции, а потом я от этого варианта отказался (через массив указателей функции не inline-ятся, изначально это было неважно, но после смены пары концепций приобрело значение ), получилась огромная перестойка - и всё равно это оптимизация. Просто глобальная, ведь единственная цель - ускорение работы (на самом деле я параллельно увеличил гибкость - но мог бы этого не делать )

dE fENDER писал(а):
А. Александреску, Стандарты программирования на C++. 101 правило и рекомендация писал(а):
Пока необходимость оптимизации не доказана— вашим приоритетом №1 должно быть написание кода для человека. (Если кто-то потребует от вас оптимизации кода — потребуйте доказательств необходимости этого.)

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


 

Member
Статус: Не в сети
Регистрация: 12.05.2008
SkaYPredo писал(а):
Наука не канает, все на собственных мышцах!!! :-)
Скорость зависит от чтения и обработки кодов которые ты задаешь, правильно???
Идем дальше, если у тебя есть несколько блоков которые повторяются пишешь один ставишь переменнную чтоб их использовать, я правильно веду логику???
Если еще дальше, пишешь блок который может изменяться в зависимости от переменной и все, и не зачем его каждый раз прописывать, ну я имею ввиду правтически одну и ту же процедуру,но с разными поддтипами и т.д. её не зачем писать когда переменная быстрее вставиться и блок обрабатываемой информации меньше, я правильно думаю???
Точнее мыслю, или я совсем ЛОХ стал в написании...


Да, ваш поток сознания довольно тяжело воспринимается. Попробуйте внимательней относится к знакам препинания.
Я так думаю, что у автора конечно же нет повторяющихся одинаковых условий в проверках. Просто наблюдается засилье оператора if в определенном участке кода или разных его кусках. Я по молодости тоже так писал, потом мне стало ясно что в определенных классах часто встречающихся задач его вообще можно не использовать. Но при этом я стал их решать совершенно иным способом.


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Industrialice писал(а):
это оптимизация. Просто глобальная

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

Т.е как при подсчёте числа Пи, можно считать каждый раз с нужной точностью перед использованием, а можно держать готовый в памяти и иметь под рукой всегда. Оба подхода правильные (первый например используется в бенчмарках) но назвать второй лишь оптимизацией первого очень было бы странно. Это просто разные вещи.

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Vladson писал(а):
Industrialice писал(а):
это оптимизация. Просто глобальная

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

По-моему это получается спор о понятиях. Оптимизация - увеличение скорости работы и/или экономичности без изменения функциональности. Может быть даже с некоторым изменением функциональности ( допустимым, например, когда результат разный, но он неотличим ) - лично меня такое определение устраивает


 

Member
Статус: Не в сети
Регистрация: 12.05.2008
Industrialice писал(а):
... и всё равно это оптимизация. Просто глобальная, ведь единственная цель - ускорение работы (на самом деле я параллельно увеличил гибкость - но мог бы этого не делать )

Назовите это другим термином. Вот, скажем, прекрасный вариант предложил SkaYPredo - "убыстрилизация".

Industrialice писал(а):
... И всё равно это похоже на то, как новичков пугают goto, чтобы не привыкали, ибо научиться программированию используя goto будет намного сложнее

Новичку научится программированию используя goto - раз плюнуть. Только потом код не прочтешь. Т.е. его алгоритмы и категории мышления моментально станут настолько сложными (именно чужеродными для человеческого разума), что будет легче прочесть программы, полученные генетическим программированием. С другой стороны, я читал "Веревку" и тоже являюсь сторонником этого оператора, так как во многих случаях его использование резко снижает сложность программы - позволяет избавится от кучи вложенных блоков и тех же if. И именно по той же самой причине нельзя использовать оптимизацию, потому что она превращается в обфускацию кода.


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Industrialice писал(а):
получается спор о понятиях

Похоже на то.

Так вот мне кажется что оптимизация кода, это то что описал Александреску, а то что описываешь ты это выше уровень, тут уже идёт оптимизация не кода, а процесс перепроектирования.

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
dE fENDER писал(а):
Назовите это другим термином. Вот, скажем, прекрасный вариант предложил SkaYPredo - "убыстрилизация".

А зачем? Я, опять же, не вижу причин не использовать слово оптимизация. Скажем так, значение этого слова просто зависит от контекста

dE fENDER писал(а):
Новичку научится программированию используя goto - раз плюнуть. Только потом код не прочтешь. Т.е. его алгоритмы и категории мышления моментально станут настолько сложными (именно чужеродными для человеческого разума), что будет легче прочесть программы, полученные генетическим программированием. С другой стороны, я читал "Веревку" и тоже являюсь сторонником этого оператора, так как во многих случаях его использование резко снижает сложность программы - позволяет избавится от кучи вложенных блоков и тех же if. И именно по той же самой причине нельзя использовать оптимизацию, потому что она превращается в обфускацию кода.

Я про тоже самое касательно goto и говорил: запугивают чуть ли не динозаврами. И правильно делают. Хотя в том же системном программирвоании никуда без goto. Но всему надо знать меру: часто при использовании goto компилятор не может применить оптимизации - что в итоге больно бьёт по скорости работы. Опытный программист знает последствия, он и знает где использовать, где нет.
Насчёт обфускации не понял: обычно это нереально запарный процесс ( делал всего для двух проектов, хотя давно было ). А тут на тебе - оптимизация заодно приносит бонус в виде усложнения дизассемблинга


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
в точки зрения современного компилятора goto от if или while не сильно отличается, они вообще сейчас очень умные стали. а писать хороший код на C без goto практически невозможно.

а вот касательно оптимизации... вообще, изначально стоит оценивать куски алгоритма и прикидывать, какую алгоритмическую сложность можно позволить на каждом из этих кусков. скажем, если делаем какой нибудь memcache для большого количества мелких файлов - то никакие rb-деревья не катят, только хэш-таблицы. но при этом надо обязательно и правильный аллокатор писать, и очереди грамотно использовать, иначе все труды сведутся на нет. а вот каким образом парсится конфиг - глубоко параллельно, это происходит всего 1 раз за всю работу программы, оптимизировать там что либо нет никакого смысла.
топикстартеру рекомендую подумать на тему, в какой момент времени он хочет обрабатывать свои события, на сколько важна синхронность их обработки с отображением кадров. возможно, что-то стоит вообще в отдельный поток вытащить. или можно попробовать делать события-объекты, а в коде просто пробегаться по цепочке из них и заставлять каждое из событий проверять своё условие. или вообще внедрить какой нибудь lua. вариантов очень много, каждый накладывает свои ограничения.


 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
Всем спасибо! Топик стартовал после двух суток сидения за компом без сна, что привело в соответствующее расположение духа.
Небольшая пауза открыла глаза на незамеченные ранее моменты в документации Unity3D (потому и C# - можно было бы и JS, но это уже совсем как-то странно) из-за которых теперь рефакторинг по over200 строк кода ежедневно.
Профайлинг показывает, что затраты ресурсов на
Код:
if ((target.transform.position - transform.position).magnitude < 0) {... }
if (!started) {if (Time.time > time) {started = true; ... } }
на все задействованные объекты настолько ничтожно малы, что даже смешно.
Ну, а в плане оптимизаций массово заменил & на && :)

Добавлено спустя 16 минут 29 секунд:
*рефакторинг по минус over200 строк :)

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
AzaZeo писал(а):
Ну, а в плане оптимизаций массово заменил & на && :)

Ого у вас оптимизации. Надеюсь не забыли где надо заменить | на || - у | приоритет выше чем у &&, так что могут быть сюрпризы


 

Member
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Беларусь, Минск
Industrialice писал(а):
AzaZeo писал(а):
Ну, а в плане оптимизаций массово заменил & на && :)

Ого у вас оптимизации. Надеюсь не забыли где надо заменить | на || - у | приоритет выше чем у &&, так что могут быть сюрпризы

у меня | нигде не используется, сам в шоке :oops:

_________________
ASUS A4M88T-M, Athlon II X3 425, 2GB NCP, video - internal ATI 4250, 200GB Samsung HDD, Win7 x64


 

Member
Статус: Не в сети
Регистрация: 24.06.2003
Откуда: Москва
главное чтобы эти проверки были реализовали в моделях, а не где-нибудь в глобальном контексте :cry:
кстати принцип MVC применим к gamedev?

_________________
.


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Kryos писал(а):
главное чтобы эти проверки были реализовали в моделях, а не где-нибудь в глобальном контексте :cry:

Што простите?

Kryos писал(а):
кстати принцип MVC применим к gamedev?

А он вообще к чему-то кроме создания сайтов реально применим? :?:


 

Member
Статус: Не в сети
Регистрация: 24.06.2003
Откуда: Москва
Industrialice
Цитата:
А он вообще к чему-то кроме создания сайтов реально применим?

Почему нет?
Логика поведения/физика объектов описывается в моделях.
Контроллер отвечает за ... я тут хз как это описать для игры, но например за подгрузку разного рода инфы, события
Вьюшка собственно описывает рендеринг.

Цитата:
Што простите?

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

_________________
.


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Kryos писал(а):
Почему нет?
Логика поведения/физика объектов описывается в моделях.
Контроллер отвечает за ... я тут хз как это описать для игры, но например за подгрузку разного рода инфы, события
Вьюшка собственно описывает рендеринг.

Я не знаю как вы себе это представляете. И не буду говорить что так нельзя сделать - можно, но получится жуткое месиво в коде. У меня сейчас каждый объект сам знает как ему рисоваться - я просто вызываю при рисовании сцены у объектов соответствующие методы. Ну, хотя если по такой логике функцию Display (которая рисует сцену, хотя на деле там только вызовы методов) считать View... За подгрузку ресурсов отвечает набор функций - например, если объекту нужно загрузить текстуру, он делает запрос, а там уже проверяется - если такой текстуры нету - загружается и выдаётся на неё указатель, если уже загружена - просто выдаётся указатель на уже загруженную. А есть ещё гигантское количество всяких механизмов - всё это слишком сложно и простым MVC это не опишешь

Kryos писал(а):
Только не говорите, что никогда не слышали о шаблонах проектирования

Слышал, но мне что-то сложно представить как это относится к разработке игрового движка


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 36 • Страница 2 из 2<  1  2
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan