|
|
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Приветствую! Это может быть, например - ... Минимизация преобразования типов в выражениях; Исключение многократных обращений к элементам массивов по индексам (при вычислении адреса элемента используются операции умножения на значение индексов) - первый раз прочитав из памяти элемент массива, следует запомнить его в скалярной переменной и использовать в нужных местах. ... Если кто- то может расширить список не сразу очевидными приемами, думаю, это было бы полезной информацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 18:22:00 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
мемоизация вместо твоего пункта №2. Это более общая постановка проблемы. COW там где это возможно и не только для строковых переменных а для объектов. Организация пулов и кешей объектов. Прочие алгоритмические оптимизации которые компиллятор в состоянии увидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 18:58:36 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
это вредная информация. Там всё сделано нормально с хранением скалярных массивов или пр. блаблабла. Оптимизировать надо в совершенно других местах, типа долгое время отклика от сервера, использование в разборе текста String вместо StringBuilder и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 19:07:23 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Что такое "машинно-независимая" оптимизация кода? Подозреваю, что это - просто программу надо правильно написать, вне зависимости от языка программирования и платформы. Другое дело, надо найти точки (множество) пересечения треугольника и окружности на яве. Можно, конечно, пробежаться по всем точкам и подставить значения в уравнение, а можно использовать стандартные средства (2Д). Второе гораздо проще и работать будет в десятки раз быстрее, потому что методы Java2D используют нативный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 20:15:15 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
ShSergeЧто такое "машинно-независимая" оптимизация кода? Подозреваю, что это - просто программу надо правильно написать, вне зависимости от языка программирования и платформы. Другое дело, надо найти точки (множество) пересечения треугольника и окружности на яве. Можно, конечно, пробежаться по всем точкам и подставить значения в уравнение, а можно использовать стандартные средства (2Д). Второе гораздо проще и работать будет в десятки раз быстрее, потому что методы Java2D используют нативный код. а можно заранее составить таблицу с возможными значениями, скажем с шагом в одну сотую, и брать значения оттуда. Будет ещё быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 20:22:54 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Приветствую всех! Под машинно- независимой имеется в виду оптимизация на уровне входного языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 22:41:10 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
ivanov-void , вот ряд оптимизаций, которые смог вспомнить. Перечисляю как оптимизации, производимые компилятором, так и оптимизации, выполняемые в рантайме. 1. Инлайнинг. 2. Девиртуализация вызова метода - замена виртуального вызова метода на прямой статический вызов (и без обращения к ТВМ). 3. Замена параметров методов константными значениями. 4. Удаление избыточных проверок на null (NULL Check Elimination). 5. Удаление избыточных проверок принадлежности к подклассу какого-либо класса (Dynamic Cast Elimination). 6. Удаление избыточных проверок выхода индекса массива за его пределы (Range Check Elimination). В JVM . 7. Развертывание объектов (не помню точное название), создаваемых и используемых только в пределах ограниченной локальной области. Более подробно, см. Escape Analysis , особенно Converting heap allocations to stack allocations. 8. Развертывание циклов / расцикливание (Loop Unrolling). В JVM . 9. Удаление неиспользуемого кода. 10. Удаление общих выражений (Subexpression Elimination). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 23:52:32 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarovкоторые смог вспомнитьне там работаешь ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 23:56:46 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarov, А что такое инлайнинг и девиртуализация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 00:00:31 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
ShSergeинлайнингесли щтото используется один раз (например, метод), то оно (например, тело метода) тупо вставляется туда, где есть его (например, метода) вызов ShSergeдевиртуализацияэто мне в двух словах не рассказать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 00:05:17 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
grasoff.netShSergeинлайнингесли щтото используется один раз (например, метод), то оно (например, тело метода) тупо вставляется туда, где есть его (например, метода) вызов ShSergeдевиртуализацияэто мне в двух словах не рассказать :) И на том спасибо. Обосрал меня на всю вселенную. Я тебе припомню, противный. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 00:08:11 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
grasoff.net , ну... мы оба вляпались. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 00:24:59 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
ShSerge , дык это... Я там пояснил девиртуализацию :). А про vtable лучше в гугле гуглить :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 00:30:57 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
Тут еще большой вопрос что мы подразумеваем под оптимизацией. Если п9 - удаление неиспользуемого кода. как следствие ведёт к более рациональному использованию сегмента памяти под код, тогда у нас появляется много-векторность в самом процессе оптимизации. Ну скажем Loop Unrolling увеличивает количество кода но уменьшает доступную память под сегмент кода. Есть эвристический ползунок Код: java 1. 2. 3. 4. Вы его выставляете вручную исходя из предпочтений. Крайнее правое положение соответствует весьма компактным бинарникам которые будут более эффективно лежать в памяти и меньше падать в swap операционной системы и как следствие гарантируют большую отзывчивость (додумайте сами чего). Вобщем как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 01:08:58 |
|
||
|
Вопросы машинно- независимой оптимизации кода
|
|||
|---|---|---|---|
|
#18+
ivanov-voidПриветствую! Это может быть, например - ... Минимизация преобразования типов в выражениях; Исключение многократных обращений к элементам массивов по индексам (при вычислении адреса элемента используются операции умножения на значение индексов) - первый раз прочитав из памяти элемент массива, следует запомнить его в скалярной переменной и использовать в нужных местах. ... Если кто- то может расширить список не сразу очевидными приемами, думаю, это было бы полезной информацией. - не вычислять аргументы функций, которые не понадобились для вычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 06:21:18 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2132840]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
364ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 330ms |
| total: | 813ms |

| 0 / 0 |
