0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LuaAdvent Calendar 2022

Day 12

luajitもbit演算できるんか

Last updated at Posted at 2022-12-20

 
この記事はアドカレに参加しています。

luajitでもbit演算できるらしい

先日、19日目の記事を読みました。なんか、luajitでもbit演算できるみたいですね。

ところで、aviutlの独自関数にもSHIFTというものがあります。

同じ機能、、、

高速化手段、、、

準備に手間がかからない、、、

簡単、、、

そう、時間を計測してどっちが速いのか確かめたくなりますね。

コード

コードを以下に示します。
テキストボックスにコピペすると、patch.aulのコンソールに計測結果が表示されます。

<?
local t1,t2
local d=require("M_Blur_Module")


t1=d.time()--normal計測開始

local a=1
for i=0,100000 do
a=a*256
a=a/256
end

t2=d.time()--normal計測終了
local TIME=t2-t1
debug_print(a)
debug_print(string.format("normal : %f[ms]",TIME))


t1=d.time()--aviutl計測開始

local a=1
for i=0,100000 do
a=SHIFT(a,8)
a=SHIFT(a,-8)
end

t2=d.time()--aviutl計測終了
local TIME=t2-t1
debug_print(a)
debug_print(string.format("aviutl : %f[ms]",TIME))


t1=d.time()--luajit計測開始

local bit=require("bit")

local a=1
for i=0,100000 do
a=bit.lshift(a,8)
a=bit.rshift(a,8)
end

t2=d.time()--luajit計測終了
local TIME=t2-t1
debug_print(a)
debug_print(string.format("luajit : %f[ms]",TIME))

debug_print("\n")
?>

結果

普通の演算、SHIFT関数、bit.~の順番に表示されるので、その結果の一部を以下に示します。

patch.aul
[20:28:03]      1
[20:28:03]      normal : 0.471600[ms]
[20:28:03]      1
[20:28:03]      aviutl : 7.597200[ms]
[20:28:03]      1
[20:28:03]      luajit : 0.121300[ms]
[20:28:03]

[20:28:04]      1
[20:28:04]      normal : 0.362400[ms]
[20:28:04]      1
[20:28:04]      aviutl : 5.965100[ms]
[20:28:04]      1
[20:28:04]      luajit : 0.181900[ms]
[20:28:04]

[20:28:04]      1
[20:28:04]      normal : 0.264100[ms]
[20:28:04]      1
[20:28:04]      aviutl : 5.277200[ms]
[20:28:04]      1
[20:28:04]      luajit : 0.275000[ms]
[20:28:04]

[20:28:05]      1
[20:28:05]      normal : 0.355300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 5.236900[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.192200[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.377300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 5.495800[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.268300[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.364400[ms]
[20:28:05]      1
[20:28:05]      aviutl : 5.702700[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.204600[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.356200[ms]
[20:28:05]      1
[20:28:05]      aviutl : 5.459700[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.246400[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.359800[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.340700[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.164700[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.448500[ms]
[20:28:05]      1
[20:28:05]      aviutl : 6.729800[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.156100[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.329900[ms]
[20:28:05]      1
[20:28:05]      aviutl : 6.056100[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.191300[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.500800[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.507000[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.168000[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.526800[ms]
[20:28:05]      1
[20:28:05]      aviutl : 6.608800[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.179300[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.549300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.195000[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.158800[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.393800[ms]
[20:28:05]      1
[20:28:05]      aviutl : 6.150200[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.183900[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.409400[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.438400[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.163300[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.522100[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.759400[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.203800[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.496600[ms]
[20:28:05]      1
[20:28:05]      aviutl : 9.940500[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.154200[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.357300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.445300[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.165500[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.476500[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.427600[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.167600[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.557000[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.452300[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.169400[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.500100[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.896800[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.176800[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.503100[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.418200[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.140100[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.600300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.284200[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.200100[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.494000[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.328000[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.145800[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.385900[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.974600[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.174700[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.410800[ms]
[20:28:05]      1
[20:28:05]      aviutl : 6.615500[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.160600[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.494300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.241100[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.144100[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.479600[ms]
[20:28:05]      1
[20:28:05]      aviutl : 8.411200[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.169900[ms]
[20:28:05]

[20:28:05]      1
[20:28:05]      normal : 0.451300[ms]
[20:28:05]      1
[20:28:05]      aviutl : 7.938900[ms]
[20:28:05]      1
[20:28:05]      luajit : 0.138800[ms]
[20:28:05]

[20:28:06]      1
[20:28:06]      normal : 1.403000[ms]
[20:28:06]      1
[20:28:06]      aviutl : 7.887800[ms]
[20:28:06]      1
[20:28:06]      luajit : 0.182800[ms]
[20:28:06]

 
やはりluajitは速いですね~
SHIFT関数が遅いのは、aviutlのデフォルト状態(lua5.1)に比べると速いとか、そんなかんじなんですかね…

さいごに

みなさんluajitを使いましょう…………と言いたいところですが、どうやらlua5.4が意外と速いらしいですね。僕の手元にlua5.4環境がないので、時間があるときに試してみたいです。(aviutlではlua5.4を使用できないので、別途でプログラムを書く必要がありそう?)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?