The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Язык программирования D на пути к включению в состав GCC"
Отправлено theambient, 06-Окт-11 19:26 
>> но байткод может быть докомпилирован на конечной машине, уже с учетом его
>> архитектуры и соответственно - более оптимально.
> Просто на пальцах рассудите: любая VM обладает неким _универсальным_ псевдокодом, который
> можно "отобразить" на таргет архитектуру. Т.е. он в принципе ýже, чем
> любая из железок! (наибольший общий делитель) Вопрос: как вы собрались обгонять
> нативные приложения, не используя полную мощь ЦПУ?? Одни SSE* чего стоят!

кхм, C тоже оперирует некой виртуальной машиной, являющейся общим знаменателем кучи разношерстных архитектур 80-х. Компилятор уже раскладдывает код с учетом конкретной архитектуры комманд, x86, x64, sparc, IA64, ...

Джиту в отличие от компилятора доступна информация не о конкретной арихтектуре КОММАНД, а о конкретной архитектуре ПРОЦЕССОРА, включающую в себя размер, кол-во и организацию кешей, регистров, конвеееров и прочей приблудни, которую он может задействовать. Понятное дело, чтобы в полную силу задействовать, например, кеш надо на уровне архитектуры вашей программы (исходного кода) учитывать влияние локальности данных и называется это DDD - Data Driven Design. Но при одном и том же исходном коде JIT *может* дать лучший код, так как у него больше информиации для оптимизации.

Еще один источник оптимизации - знание потока исполнения. JIT может встраивать виртуальные вызовы, так как знает что конкретно вызывается. А встроенный виртуальный метод, вызывающийся в цикле может дать хороший прирост производительности.

> Кроме того, есть ещё трюки типа выравнивания, размер кэша 2 уровня и прочая хрень - VM просто опухнет, учитывавши бенефиты каждой платформы!

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

Приведу небольшой пример, IPP (Intel Performance Primitives) построенна так, что в самом начале она определяет архитектуру проца и расставляет указатели на функции, оптимизированные под конкретный проц или на generic x86, если не поределила или пользователь (программер) забыл вызвать в самом начале соответствующую функцию определения. performance при использовании конкретного проца вырастает в разы, почему-то, давно это было, у меня в голове крутится цифра в 10 раз, но я могу путать. Но прирост в 2-3 раза - это точно.

Аналогично может поступать jit.


> Кроме того, есть ещё трюки типа выравнивания, размер кэша 2 уровня и
> прочая хрень - VM просто опухнет, учитывавши бенефиты каждой платформы!
> Вобщем, не надо фапать на JIT, успокаивая себя рекламными лозунгами - мы
> же всё-таки инженеры и должны думать головой. Да?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру