Что делает компилятор JIT?

Использование среды рисунка и .set_clim ()

Было бы проще и безопаснее использовать эту альтернативу, если у вас есть несколько графиков:

import matplotlib as m
import matplotlib.pyplot as plt
import numpy as np

cdict = {
  'red'  :  ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
  'green':  ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
  'blue' :  ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}

cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)

x = np.arange(0, 10, .1)
y = np.arange(0, 10, .1)
X, Y = np.meshgrid(x,y)

data = 2*( np.sin(X) + np.sin(3*Y) )
data1 = np.clip(data,0,6)
data2 = np.clip(data,-6,0)
vmin = np.min(np.array([data,data1,data2]))
vmax = np.max(np.array([data,data1,data2]))

fig = plt.figure()
ax = fig.add_subplot(131)
mesh = ax.pcolormesh(data, cmap = cm)
mesh.set_clim(vmin,vmax)
ax1 = fig.add_subplot(132)
mesh1 = ax1.pcolormesh(data1, cmap = cm)
mesh1.set_clim(vmin,vmax)
ax2 = fig.add_subplot(133)
mesh2 = ax2.pcolormesh(data2, cmap = cm)
mesh2.set_clim(vmin,vmax)
# Visualizing colorbar part -start
fig.colorbar(mesh,ax=ax)
fig.colorbar(mesh1,ax=ax1)
fig.colorbar(mesh2,ax=ax2)
fig.tight_layout()
# Visualizing colorbar part -end

plt.show()

Единственный цветной бар

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

fig.subplots_adjust(bottom=0.1, top=0.9, left=0.1, right=0.8,
                    wspace=0.4, hspace=0.1)
cb_ax = fig.add_axes([0.83, 0.1, 0.02, 0.8])
cbar = fig.colorbar(mesh, cax=cb_ax)

PS

Я бы предложил использовать pcolormesh вместо pcolor, потому что он быстрее (более информация здесь ).

475
задан Md. Abu Nafee Ibna Zahid 28 December 2017 в 21:08
поделиться

5 ответов

JIT-компилятор работает после , программа запустила и компилирует код (обычно байт-код или некоторые инструкции VM) на лету (или своевременный, как это называют) в форму, это обычно быстрее, обычно собственная система команд ЦП хоста. JIT имеет доступ к динамической информации о выполнении, тогда как стандартный компилятор не делает и может сделать лучшую оптимизацию как встраивание функций, которые часто используются.

Это в отличие от традиционного компилятора, который компилирует весь код на машинный язык прежде , программа является первым показом.

Для перефразирования стандартные компиляторы создают целую программу как EXE-файл ПЕРЕД первым разом, когда Вы выполняете его. Для более новых программ стиля блок сгенерирован с псевдокодом (псевдокод). Только ПОСЛЕ ТОГО, КАК Вы выполняете программу на ОС (например, путем двойного щелчка по ее значку) будет (JIT), компилятор вталкивает и генерирует машинный код (м-код), что основанный на Intel процессор или независимо от того, что поймет.

473
ответ дан Mark Cidade 28 December 2017 в 21:08
поделиться

Не-JIT-компилятор берет исходный код и преобразовывает его в машину определенный код байта во время компиляции. JIT-компилятор берет код байта агностика машины, который был сгенерирован во время компиляции и преобразовывает его в машину определенный код байта во время выполнения. JIT-компилятор, который использует Java, - то, что позволяет единственному двоичному файлу работать на множестве платформ без модификации.

1
ответ дан 28 December 2017 в 21:08
поделиться

JIT обозначает Своевременный, что означает, что код компилируется, когда это необходимо, не перед временем выполнения.

Это выгодно, потому что компилятор может генерировать код, который оптимизирован для Вашей конкретной машины. Статический компилятор, как Ваш средний компилятор C, скомпилирует весь код исполняемого кода на машине разработчика. Следовательно компилятор выполнит оптимизации на основе некоторых предположений. Это может компилировать более медленно и делать больше оптимизаций, потому что это не замедляет осуществление программы для пользователя.

9
ответ дан Brian Lyttle 28 December 2017 в 21:08
поделиться

У Вас есть код, который является compliled в некоторый IL (промежуточный язык). Когда Вы запускаете свою программу, компьютер не понимает этот код. Это только понимает собственный код. Таким образом, JIT-компилятор компилирует Ваш IL в собственный код на лету. Это делает это на уровне метода.

4
ответ дан Charles Graham 28 December 2017 в 21:08
поделиться

В начале компилятор был ответственен за превращение высокоуровневого языка (определенный как более высокий уровень, чем ассемблер) в объектный код (машинные команды), которые будут тогда связаны (компоновщиком) в исполняемый файл.

Однажды в эволюции языков, компиляторы скомпилировали бы высокоуровневый язык в псевдокод, который будет тогда интерпретироваться (интерпретатором) для запущения программы. Это устранило объектный код и исполняемые файлы, и позволило этим языкам быть портативными к нескольким операционным системам и аппаратным платформам. Паскаль (который скомпилировал в Псевдокод) был одним из первых; Java и C# являются более свежими примерами. В конечном счете термин Псевдокод был заменен байт-кодом, так как большинство псевдоопераций один байт длиной.

А Своевременный (JIT) компилятор является функцией интерпретатора во время выполнения, что вместо того, чтобы интерпретировать байт-код каждый раз метод вызывается, скомпилирует байт-код в команды машинного кода рабочей машины, и затем вызовет этот объектный код вместо этого. Идеально эффективность выполнения объектного кода преодолеет неэффективность перекомпиляции программы каждый раз, когда это работает.

243
ответ дан Craig Trader 28 December 2017 в 21:08
поделиться
Другие вопросы по тегам:

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