LINUX.ORG.RU

Развертка цикла как рефакторинг

 


2

1

Почему в сети и в литературе так мало описан такой прием рефакторинга как развертка цикла (loop unrolling) и обратные ему рефакторинг? Фактически мне нагуглилось только реализация для фортрана в некоем плагине для Эклипса.

Я в прошлую пятницу как раз наткнулся на сабж и даже не смог назвать этот рефакторинг другому прогеру.

Имхо, единственное место где нужен анролл циклов – это когда ты дрочишь ассемблер для мелкоконтроллера/дсп, что бы получить перформанс близкий к теоретическому (с учетом времени выполнения инструкций и прологом/эпилогом)... Так зачем, ты говоришь, это надо?

Stil ★★★★★
()

А нечего анскильным лалкам Царский анролл использовать.

anonymous
()

Если у тебя не ассемблер, это автоматически должно происходить по идее, при необходимости.

Xenius ★★★★★
()
Ответ на: комментарий от Stil

блин, вы по ссылке ходили? Заголовок читали?

У вас всех «оптимизирующий компилятор» головного мозга?

Кто делает рефакторинг? Правильно - человек. И ему помогает IDE.

У меня возникла проблема не связанная - в View шаблоне (Smarty) какой то идиот написал цикл for (вернее директиву, которая ему эквивалентна).

Мне нужно исключить из непрерывного множества несколько элементов.

Это задача, для выполнения которой требуется время. Нужно делать поэтапно - делать развертку цикла (вручную, это рефакторинг), удалить «ненужные элементы» -> можно в продакшн.

И уж потом писать заново новый цикл. Это тоже рефакторинг. Имя которому хрен знает какое.

Вопрос: почему про это нет информации ни в интернете, ни в книгах.

Почему единственный инструмент, в котором реализован этот рефакторинг - это плагин Фортрана для Eclipse?

EnterpriseMobility
() автор топика
Ответ на: комментарий от Xenius

причем здесь ассембер? Почему ты не читаешь заголовок? Где я там писал про оптимизацию? Каким образом я в по ха пе и большинстве скриптовых языков как то могу влиять на развертку циклов как метод оптимизации? Зачем мне это вообще нужно знать? Подымись уровнем выше - в по ха пе генерируется 50 однотипных ссылок на страницы.

EnterpriseMobility
() автор топика
Ответ на: комментарий от EnterpriseMobility

Loop unrolling - это тип оптимизации, немудрено, что для похапе этого нет, потому как это имеет смысл только на Фортране, си и похожих языках. Каким боком это связано с рефакторингом кода на высокоуровневом языке? Приведи пример, когда и зачем это вообще может быть нужно в php.

anonymous
()
Ответ на: комментарий от EnterpriseMobility

У меня возникла проблема не связанная - в View шаблоне (Smarty) какой то идиот написал цикл for (вернее директиву, которая ему эквивалентна).

Мне нужно исключить из непрерывного множества несколько элементов.

man filter

man map

man foreach

x3al ★★★★★
()

смотри, я сделаю это за тебя

refactoring
Определения в Интернете
Рефа́кторинг или реорганизация кода — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небольших эквивалентных преобразований. ...

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

anonymous
()

Почему в сети и в литературе так мало описан такой прием рефакторинга как развертка цикла (loop unrolling)

Потому что во всех популярных ЯВУ это является не рефакторингом, а усложнением. Облегчить чтение это может только если какой-то альтернативно-одаренный запихнул цикл туда, где он не нужен. Но такие люди до рефакторинга не дорастают и книги им не нужны.

German_1984 ★★
()
Ответ на: комментарий от Stil

единственное место ... мелкоконтроллера/дсп

Маркетолог интела, плес.

anonymous
()
Ответ на: комментарий от leave

OK, ты удалил 80% людей, которые не могут понять смысл слова рефакторинг. И путают со словом «внутренняя оптимизация».

Боишься, что я дам ссылки их преподавателям... в школе?

EnterpriseMobility
() автор топика
Ответ на: комментарий от anonymous

еще раз, если ты щелкнул мышкой по ссылке, то увидел бы, что для Фортрановского плагина для Eclipse реализован инструмент рефакторинга.

Я уже привел пример.

EnterpriseMobility
() автор топика
Ответ на: комментарий от EnterpriseMobility

Боюсь, что называть людей нецензурно на этом форуме запрещено.

leave ★★★★★
()

Потому что это руками это едиоты и энтузиасты, а люди делают теперь приблудами с прагмаме, которые заодно кот паралелят, либо компилятор сам умеет, да и то там надо правильное количество итераций :)

slackwarrior ★★★★★
()
Ответ на: комментарий от leave

Диалектика дискусси:

ТС, будь добр, упырь мел.

???

ТС --> упырь

slackwarrior ★★★★★
()
Ответ на: комментарий от EnterpriseMobility

в View шаблоне (Smarty)

если задача «развернуть» цикл в шаблоне для вас столь критична и иначе чем средствами IDE не разрешима, то боюсь вы не тем делом заняты..

hint - php это препроцессор который из одного текста делает другой..то есть упомянутый цикл «разворачивается». Остаётся накидать php-шник который из этого шаблона получает не html, а просто другой php. Нормальный тест при приёме на работу.

MKuznetsov ★★★★★
()
Ответ на: комментарий от slackwarrior

с прагмаме, которые заодно кот паралелят, либо компилятор сам умеет

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

EnterpriseMobility
() автор топика
Ответ на: комментарий от MKuznetsov

если задача «развернуть» цикл в шаблоне для вас столь критична и иначе чем средствами IDE не разрешима

я его вручную развернул. Я просто ищу это... как его там.. а.. систематизацию опыта... А вы тут мне про какие то оптимизирующие компиляторы говорите.

ОК, ладно, моему сеньору понравилось, как я сделал.

hint - php это препроцессор который из одного текста делает другой..то есть упомянутый цикл «разворачивается». Остаётся накидать php-шник который из этого шаблона получает не html, а просто другой php. Нормальный тест при приёме на работу.

ты в курсе, что указанный рефакторинг может должен быть имплементирован только на Java... Угадай почему. Это первый вопрос на собеседовании на вакансию по-ха-пе жуниора.

Который знает, на чем написаны 2 самые распространенные IDE для PHP.

EnterpriseMobility
() автор топика
Ответ на: комментарий от EXL

Да не, сам по себе paintEvent, это не зло. Может у них там вагон кастомных виджетов... Но по твоей первой ссылке был «whatever.ini». Загрузка текста с диска и парсинг этого самого текста... В. Функции. Отрисовки. Это самое божественное, что я видел в последнее время %)

Stil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.