Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.03.2013, 14:15
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 41  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Поэтому вы можете часто встретить мнение, что вместо цикла лучше использовать функции высшего порядка, такие как например find-if, flatten, transpose и т.п. - потому, что эти функции - абстракции уже содержащие в себе итерационный примитив + надстройку обеспечивающую дополнительные возможности.
Угу, хорошо, ...для С#, Ocaml, F#. Но никак не для ActionScript3, потому что:
- нет типизации функций,
- вызов функции непростительно дорог.
В сортировке только используется и то только потому, что копипастить алгоритм сортировки слишком дико. Но в особо критических местах именно не быстрый вызов функции заставляет делать свою реализацию сортировки.
В as3 я использовал функции высших порядков только для выбора наиболее подходящих значений/вариантов/объектов по критериям. Критерии были как раз функциями, передававшимися в алгоритм выборки. Но это использовалось только в AI, туториале. В основной логике такого не было - дорого потому что и не типизировано.

Да даже и в C# как-то стремно эти штуки использовать, мало ли как на производительности скажется, только когда без них код слишком страшным становится.

Цитата:
Сообщение от mikhailk Посмотреть сообщение
Вот этого варианта нагляднее и проще обычный for (а не for in/while):
Код AS3:
var array:Array = [ 1, 23, 4, 54, 3, 1, 55 ];
for(var i:int = 2; i < 4; i++) array[i] = i*333;
Да, логично, Вы здесь индекс используете внутри цикла и было бы слегка странно гнать foreach-ем и итерировать внутри цикла i++ одновременно, сравнивать i и вызывать break.

Старый 11.03.2013, 14:26
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 42  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Что вообще за пустотелый бред - мерить профессионализм циклами? это знатное трололо !!!

А вот какой из этих 2х примеров профессиональнее??! )))

Код AS3:
private var count:int = 0;
.................................
if(count) trace("hello");
 
или
................................
if(count > 0) trace ("hello");
???
__________________
Марк Tween

Старый 11.03.2013, 14:43
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 43  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
А вот какой из этих 2х примеров профессиональнее??! )))
Второй?

Старый 11.03.2013, 15:57
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 44  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Зачем применительно к скриптовому языку обсуждают способы выиграть несколько команд процессора? По-моему, куда важнее читабельность кода. И for, по-моему, в этом смысле лучше подходит почти во всех случаях.

P.S.: Я могу ошибаться, но мой опыт работы с С++ подсказывает, что while (i--) стоит делать чуть чаще чем никогда (так же как использовать побитные команды для оптимизации всяких умножений и округлений). По-моему, не стоит, опираться на особенности представления числа в памяти при работе с ним. Представление может поменяться, может поменяться разрядность числа (опять-таки, вполне вероятно, что для скриптовых языков это не так актуально и я ошибаюсь, если что - поправте меня).
Плюс формально не логично - использовать число в качестве флага. Тут хоть декримент стоит и видно, что это число. А если бы было что-то вроде while(i) - вообще беда и путаница для программиста, читающего код.

Цитата:
А вот какой из этих 2х примеров профессиональнее??! )))
P.P.S.: Да, второй.

Старый 11.03.2013, 16:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 45  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
А я угадаю эту мелодию с двух нот. )
Цитата:
P.P.S.: Да, второй.
Откуда такой однозначный вывод?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 11.03.2013, 16:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 46  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Второй да, ну хоть объяснили бы почему)))

По сабжу, я вообще, например, не использую while - тут кто к чему привык, кому как удобно. с for - код читабельнее это 100%, скорости почти одинаковы. Так что, профессиональнее там - где читать удобно и понятно
__________________
Марк Tween

Старый 11.03.2013, 16:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 47  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
in4core, Вы сами-то заметили, что у Вас условия разные?
Первое выдаст трейс, если count=-1, а второе — нет.
Это ответ на вопрос "почему второй", если такой возникнет. Потому что так вероятность ошибки "не учёл" практически исключена.
__________________
Reality.getBounds(this);

Старый 11.03.2013, 16:20
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 48  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
in4core, Вы сами-то заметили, что у Вас условия разные?
Первое выдаст трейс, если i=-1, а второе — нет.
Угу условия разные для AS3 - потому, что -1 по сути должно быть false. Но по скольку здесь это будет true - да , условия получаются разные.

Поэтому можно заменить на private var str:String = ""; и проверки if(str) против if(str == "")

___________
Или вот например - можно назвать знатным трололо использовать int в циклах вместо uint. ( ну когда нужно ). А ведь 99% разработчиков используют именно int
__________________
Марк Tween

Старый 11.03.2013, 16:24
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 49  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Отсюда следует резонный вопрос, как вывести критерии профессионализма из задачи в которой сравниваются красное с теплым, но при этом не уточняется, что получить надо только красное или только теплое?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 11.03.2013, 16:25
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 50  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Зачем применительно к скриптовому языку обсуждают способы выиграть несколько команд процессора?
Потому что на этом скриптовом языке пишут игры, не часть сценария игры, не настройки сущностей, как на lua - а самую основную логику игры. И вопрос производительности стоит очень остро. На нём физические движки пишут и надо сказать - не быстро они работают - нельзя там игнорировать низкоуровневые оптимизации.

Не, тут конечно один товарищ пытался оптимизировать итерацию по 10-ти элементам за кадр. И совершенно не беспокоился о времени, потраченном на обработку каждого элемента и о тоннах другого кода, который выполняелся в том же кадре.
Но это общие вопросы оптимизации - в С++ тоже _не_ надо оптимизировать участок, который отжирает .1% от общего времени работы игры. Надо критические места оптимизировать. Но в as3 коде такие места встречаются и часто именно код является источником тормозов, хотя рендеринг дотридешного флеша тоже медленный как сволочь.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.