Что такое LLVM и Как заменяет Python VM LLVM увеличивающиеся скорости 5x?

используйте row_number()

with cte as

(SELECT T1.H_ID AS 'ID',T1.NAME,T1.ROLE,T2.SALARY,T3.IMAGE 
,row_number() over(partition by T2.img_id order by T3.id) rn
FROM TABLE1 T1 

JOIN TABLE2 T2 
ON T1.H_ID T2.H_ID  

JOIN TABLE3 T3 
ON T3.IMG_ID = T2.IMG_ID WHERE T1.STATUS = 'ACTIVE'

) select * from cte where rn=1

После ваших комментариев кажется, что вам нужен подзапрос

select T1.*,T2.sal,a.url
    FROM TABLE1 T1     
    JOIN TABLE2 T2 
    ON T1.H_ID T2.H_ID
    left join ( select min(id),img_id,url from table3 group by img_id,url) a
    on T2.IMG_ID= a.img_id
  WHERE T1.STATUS = 'ACTIVE'
26
задан Don Wakefield 22 October 2009 в 18:04
поделиться

3 ответа

LLVM является несколькими вещами вместе - своего рода виртуальная машина / оптимизирующий компилятор, объединенный с различными frontends, которые берут вход в конкретном языке и производят результат на промежуточном языке. Этот промежуточный вывод может быть выполнен с виртуальной машиной или может использоваться для генерации автономного исполняемого файла.

Проблема с параллелизмом состоит в том, что, хотя он использовался в течение долгого времени в научных вычислениях, он имеет, просто недавно стал распространен в пользовательских приложениях. Таким образом, в то время как широко известно, как программировать научную программу вычисления для достижения высокой эффективности, это - совершенно другая вещь записать почтовый агент пользователя / текстовой процессор, который может быть способным к параллелизму. Кроме того, большая часть текущей ОС разрабатывались с единственным процессором в памяти, и они не могут быть полностью подготовлены к многоядерным процессорам.

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

Уверенный существуют более возможные усовершенствования для аппаратных средств как квантовые компьютеры, компьютеры генетики, и т.д. Но мы должны ожидать их для становления действительностью.

31
ответ дан 2 revs, 2 users 83% 28 November 2019 в 06:37
поделиться

LLVM заботится об основных элементах генерации кода, таким образом, это позволяет им переписать Psyco способом, это является более общим, портативным, удобным в сопровождении. Это в свою очередь позволяет им переписывать ядро CPython, которое позволяет им экспериментировать с альтернативным GCs, и другие вещи должны были улучшить поддержку Python параллелизма.

Другими словами, LLVM не решает проблему параллелизма, он просто освобождает Ваши руки, таким образом, можно решить его.

15
ответ дан Rhamphoryncus 28 November 2019 в 06:37
поделиться

Переключатель к самому LLVM не решает проблему параллелизма. Это решается отдельно путем избавления от Глобальной Блокировки Интерпретатора.

Я не уверен, как я чувствую об этом; я использую потоки главным образом, чтобы иметь дело с блокированием ввода-вывода, не использовать в своих интересах многоядерные процессоры (для которого, я использовал бы multiprocessing модуль для порождения отдельных процессов).

Таким образом, мне отчасти нравится GIL; это делает мою жизнь намного легче не необходимость думать о хитрых проблемах синхронизации.

17
ответ дан DNS 28 November 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: