|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.12.2012, 11:40 | #11 | ||
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Цитата:
Цитата:
|
||
11.12.2012, 13:50 | #12 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Разные алгоритмы обладают разными характеристиками: ресурсоемкость в вычислениях в целых числах, ресурсоемкость в вычислениях с плавающей точкой, требования к памяти, требуемая глубина стека, баланс между операциями условного перехода и "линейным" кодом... И в каждом случае для конкретных условий применения, о которых компилятор не имеет никакого понятия, выбор должен оставаться за программистом. Глупо полагать, что если написать код кое как, компилятор потом "все равно все оптимизирует". |
|
11.12.2012, 23:20 | #13 | |||
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Цитата:
Цитата:
Цитата:
x = a + b; y = x*2 и x = a + b y = (a+b)*2 Далеко не одно и тоже! В первом случае все будет выполняться последовательно, т.к. y зависит от x, во втором случае их можно выполнить параллельно. Пример высосан из пальца, но в целом все как-то так и подобные вещи компилятор должен сам распознавать и предпринимать соответствующие действия, вместо многословных методов распаривания. И если бы процессоры не занимались оптимизацией команд которые им следует выполнять, то вообще труба дело. А так он сам разбирается что можно выполнить в разных вычислительных блоках, предсказывает переходы в памяти и заранее запрашивает предполагаемые данные у оперативки, пока сам выполняет вычисления. Из оперативки достает 64 байта и кладет их в кэш всегда(процессоры intel), грех этим не воспользоваться. И если есть возможность скомпоновать комманды таким образом, чтобы они были выполнены на процессоре в разных блоках, то этим нужно пользоваться, но гораздо лучше, если бы этим еще занимался и компилятор! |
|||
12.12.2012, 16:04 | #14 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
В функциональных языках это часто (традиционно) реализовано еще символически. То есть в первый проход x = a + b; y = x*2 будет заменено на y = (a+b)*2 на уровне токенов, еще до оптимизаций команд процессора. Это есть например в ocaml.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
12.12.2012, 18:08 | #15 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Еще можно о чем-то говорить, если есть уверенность, что у нас всегда присутствуют свободные от работы процессоры/ядра (и то не в данном примере, но будем считать, что данный пример - лишь иллюстрация, а не реальный код). А если у нас всего одно ядро? Либо просто процессор загружен другой работой, и для него актуальна экономия именно процессорного времени, а не астрономического? Еще раз: это не дело компилятора, распараллеливать или нет - должен решать программист. |
|
13.12.2012, 22:34 | #16 | ||||
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
14.12.2012, 12:17 | #17 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Все современные суперскалярные процессоры именно так и делают. Но согласно программной модели, тем не менее, команды выполняются последовательно. Цитата:
Но при чем здесь компилятор, который работает именно с программной моделью? |
||
14.12.2012, 13:53 | #18 | ||
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Цитата:
Цитата:
Вопрос, кто же по вашему должен заниматься подобной оптимизацией? Кодер? |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
синусы и ко. циклы, вроде циклы | Scorch92 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 22.12.2010 19:26 |
Рекурсия | <Tyz> | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 18.12.2010 23:22 |
рекурсия | DinaraIITU | Помощь студентам | 3 | 04.11.2010 15:39 |
Рекурсия на С++ | Nitriyc | Помощь студентам | 0 | 28.04.2010 17:22 |
Циклы - вложенны циклы? | tigga | Microsoft Office Excel | 5 | 19.02.2010 23:36 |