Сравнение языков программирования

Страницы: 1
RSS
Сравнение языков программирования
 
 
что там по шкале?
 
И что значат разноцветные точки?
 
LuaJIT это ваша разработка?
И какой от него смысл, если тормозит сам квик?
 
Цитата
Cyber написал:
LuaJIT это ваша разработка?
И какой от него смысл, если тормозит сам квик?
JIT компиляция это современные методы оптимизации скриптов во время их выполнения.
Именно это и позволяет ускорить выполнения скрипта на порядок.
Про luaJit можете посмотреть здесь:  
https://luajit.org/ext_ffi_semantics.html#callback
-------------------------  
Смысл в том, что в текущей реализации QUIK Lua  обработка сделок по инструментам происходит последовательно.
------------------------
Тормозит отображение графиков и таблиц, вычисление индикаторов на луа  и последовательная обработка колбеков.
---------------
Вот эти тормоза и убираются путем создания многопоточной обработки на основе jit компиляторов.
Если у Вас n ядер, то потенциально можно ускорить вычисления примерно в 10*n раз.
===============  
Разные точки на графиках - это различные тесты, на которых тестировались языки.
Вот их список:


.
 
Немного о новом языке Terra на основе Lua
---------------------
Мы используем популярный скриптовый язык Lua для поэтапного выполнения нового низкоуровневого языка Terra. Пользователи могут реализовать оптимизацию на языке высокого уровня и использовать встроенные конструкции для генерации и выполнения высокопроизводительного кода Terra.
Для упрощения метапрограммирования Lua и Terra используют одну и ту же лексическую среду, но для обеспечения производительности код Terra может выполняться независимо от среды выполнения Lua.
Мы оцениваем наш дизайн, полностью переосмысливая существующие многоязычные системы в Terra.
Наш автонастройщик на базе Terra для подпрограмм BLAS выполняет в пределах 20% от ATLAS, а наш DSL для трафаретных вычислений выполняется в 2,3 раза быстрее, чем рукописный C.
-------------------------
Мы представляем экзотипы, определяемые пользователем типы, которые сочетают гибкость метаобъектных протоколов в динамически типизированных языках с контролем производительности языков низкого уровня. Подобно объектам в динамических языках, экзотипы определяются программно во время выполнения, позволяя вести себя на основе внешних данных, таких как схема базы данных. Для достижения высокой производительности мы используем поэтапное программирование для определения поведения экзотипа на этапе компиляции во время выполнения и реализуем экзотипы на Terra, низкоуровневом поэтапном языке программирования.

Мы покажем, как конструкторы exotype создают и используют exotypes для реализации высокопроизводительных библиотек для сериализации, динамической сборки, автоматического дифференцирования и вероятностного программирования. Каждый экзотип обеспечивает выразительность, аналогичную библиотекам, написанным на языках с динамической типизацией, но реализует оптимизации, которые превосходят производительность существующих библиотек, написанных на низкоуровневых языках со статической типизацией. Хотя каждая реализация значительно короче, наша библиотека сериализации в 11 раз быстрее, чем Kryo, а наш динамический ассемблер в 3-20 раз быстрее, чем ассемблер Chrome от Google.

 
 "Русский Язык - Язык Мироздания (математики, программирования, творца)" Говоров В.И.
 
Цитата
nikolz написал:
Немного о новом языке  Terra на основе Lua
---------------------
Мы используем популярный скриптовый язык Lua для поэтапного выполнения нового низкоуровневого языка Terra. Пользователи могут реализовать оптимизацию на языке высокого уровня и использовать встроенные конструкции для генерации и выполнения высокопроизводительного кода Terra.
Для упрощения метапрограммирования Lua и Terra используют одну и ту же лексическую среду, но для обеспечения производительности код Terra может выполняться независимо от среды выполнения Lua.
Мы оцениваем наш дизайн, полностью переосмысливая существующие многоязычные системы в Terra.
Наш автонастройщик на базе Terra для подпрограмм BLAS  выполняет в пределах 20% от ATLAS, а наш DSL для трафаретных вычислений выполняется в 2,3 раза быстрее, чем рукописный C.
-------------------------
Мы представляем экзотипы, определяемые пользователем типы, которые сочетают гибкость метаобъектных протоколов в динамически типизированных языках с контролем производительности языков низкого уровня. Подобно объектам в динамических языках, экзотипы определяются программно во время выполнения, позволяя вести себя на основе внешних данных, таких как схема базы данных. Для достижения высокой производительности мы используем поэтапное программирование для определения поведения экзотипа на этапе компиляции во время выполнения и реализуем экзотипы на Terra, низкоуровневом поэтапном языке программирования. Мы покажем, как конструкторы exotype создают и используют exotypes для реализации высокопроизводительных библиотек для сериализации, динамической сборки, автоматического дифференцирования и вероятностного программирования. Каждый экзотип обеспечивает выразительность, аналогичную библиотекам, написанным на языках с динамической типизацией, но реализует оптимизации, к оторые превосходят производительность существующих библиотек, написанных на низкоуровневых языках со статической типизацией. Хотя каждая реализация значительно короче, наша библиотека сериализации в 11 раз быстрее, чем Kryo, а наш динамический ассемблер в 3-20 раз быстрее, чем ассемблер Chrome от Google.  
Это перевод абстракта статьи 2014 года. Хотя релизы есть и сейчас, до продакшна ещё далеко. Описанное ускорение стандартно для multi-staged programming, неважно на каком языке. Но тема с управлением компиляцией HL языком интересная.
 
А для Lua без Jit'а какой результат?
 
Пример расчет SMA .
Код
function SMA(i,P,x,y)
   if i==1 then  y=x;
   else
      local i1=i-1;
      local y=V[i1] or 0;
      if i<=P then y=y+i1*x/i;else y=y+(y-x)/P; end
   end
   return y;
end

local t=os.clock();
local N=256;
local y=0;
local A=100.
local P=128
local W=2*3.14/N
for i=1,1000000 do
   local i1=i-1;
   local x=A*math.sin(W*i);
   y=SMA(i,P,x,y);
--   print(i,x,y);
end
print(os.clock()-t);
время вычисления:
Код
>D:/LuaJIT/luajit.exe -e "io.stdout:setvbuf 'no'" "testTJ.jit" 
0.018
>Exit code: 0
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "testTX.lua" 
0.17
>Exit code: 0
>D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "testTX.lua" 
0.145
>Exit code: 0
 
Что толку от jit, если квик однопоточный и большая часть тормозов внутренняя при отображении и обработке, а не в lua.
Радует, что 5,4 на 20% шустрее 5,3.
LuaJIT мы в квике не дождемся.
 
Цитата
Cyber написал:
Радует, что 5,4 на 20% шустрее 5,3.
Подскажите, как Вы сравнивали?
 
Цитата
funduk написал:
Цитата
Cyber написал:
Радует, что 5,4 на 20% шустрее 5,3.
Подскажите, как Вы сравнивали?
Вон же выше написаны результаты.
 
Цитата
funduk написал:
Цитата
Cyber написал:
Радует, что 5,4 на 20% шустрее 5,3.
Подскажите, как Вы сравнивали?
Запускаю приведенный выше скрипт в exe. В строке результат выше указана командная строка запуска скрипта на исполнение.
 
Странно, не видел сообщений Constantin и nikolz, когда писал, после моего сообщения было сразу сообщение Cyber  :shock:



Круто. У меня на 40% аж быстрее, что внутри квика, что отдельно.
Страницы: 1
Читают тему
Наверх