The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Для Python предложен JIT-компилятор, использующий технику copy-and-patch, opennews (??), 26-Дек-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


35. "Для Python предложен JIT-компилятор, использующий технику co..."  –2 +/
Сообщение от Аноним (35), 26-Дек-23, 17:16 
Ты с if/else не попутал?

switch/case выстраивает jump table, там похер в каком порядке идут значения

Ответить | Правка | Наверх | Cообщить модератору

46. "Для Python предложен JIT-компилятор, использующий технику co..."  +2 +/
Сообщение от Bottle (?), 26-Дек-23, 18:27 
Семантически switch-case и if-else одинаковы, современные компиляторы их разворачивают в одинаковые инструкции 100%. Это раньше могли быть приколы вида того, что for(;;) и while(true) преобразовались в разные ассемблерных инструкции.
Ответить | Правка | Наверх | Cообщить модератору

52. "Для Python предложен JIT-компилятор, использующий технику co..."  +/
Сообщение от Аноним (52), 26-Дек-23, 19:04 
Вы путаете обычный switch и switch с паттерн матчингом. Для обычного свитча компилятор собирает lookup табличку, в которой jmp на нужную ветку идёт даже без cmp инструкций. А вот паттерн матчинг разворачивается в обычные if со всеми вытекающими
Ответить | Правка | Наверх | Cообщить модератору

82. "Для Python предложен JIT-компилятор, использующий технику co..."  +/
Сообщение от Аноньимъ (ok), 27-Дек-23, 00:47 
Это исключительно зависит от конкретного ЯП.
Что там будет вкомпилировпнно и или выполненно в итоге.
Ифы тоже можно в jmp развернуть.

Bottle выше правильно пишет. Это одно и то же в разной записи.

Ответить | Правка | Наверх | Cообщить модератору

53. "Для Python предложен JIT-компилятор, использующий технику co..."  –1 +/
Сообщение от Аноним (35), 26-Дек-23, 19:10 
Что ты, блин, несёшь? Ты сам то проверял? Ничего там не одинаково.
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

54. "Для Python предложен JIT-компилятор, использующий технику co..."  +/
Сообщение от Аноним (-), 26-Дек-23, 19:28 
Это если у тебя switch по перечисляемому+упорядочиваемому типу, и если используется непрерывный диапазон значений этого типа. Попробуй создать джамптабличку для:

switch(n) {
   case 1: ...;
   case 2: ...;
   case 3: ...;
   case 5: ...;
   case 8: ...;
   case 13: ...;
   ...
   case fib(n): ...; // это на случай если твоя недопёрла как посчитать остальные константы
   ...
   default: ...;
}

Я б рекомендовал иногда заглядывать в вывод gcc -S, чтобы понимать, какой код он генерирует. Какой смысл вообще знать про джамптаблицы, если ты не знаешь как высокоуровневый код превращается в низкоуровневый?

Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

57. "Для Python предложен JIT-компилятор, использующий технику co..."  +/
Сообщение от all_glory_to_the_hypnotoad (ok), 26-Дек-23, 20:22 
Для первого куска делаешь таблицу с null-дырками, для второго обычное дерево или вообще линейный поиск если case-ов мало. А как оно будет на самом деле зависит от компилятора, так-то некоторые и эквивалентный каскад из if-ов умеют в таблицу упаковывать.
Ответить | Правка | Наверх | Cообщить модератору

61. "Для Python предложен JIT-компилятор, использующий технику co..."  +/
Сообщение от Аноним (-), 26-Дек-23, 20:55 
Умница дочка!

Теперь ты можешь ещё раз похвастаться беспримерными своими познаниями, сделав следующий шаг, объяснив тому анониму с его верой в джамптейблы, как ко всему что ты описываешь применимы JIT и PGO оптимизации.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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