雑記帳

ちょっとした文章とかメモ書きとか。

Lua5.1を使ってみた

いつもはコンパイル型言語のC言語(C99規格も含む)Fortran90C#などを使っています。
ですが、データ解析のためにファイルを途中までで、あとはそぉいしたい場合コンパイル型言語だと入力するファイルの行数に合わせてプログラムを変えるのがかなりめんどくさいです。

LLってどうなのよ?

Lightweight Languageの略でコンパイルを必要としない言語の総称です。
主なものにPerl,Python,Ruby,Luaがあります。

実際に書いてみる

そこで、LLにしては高速だと言われるLuaを使っての処理を書いてみました。

hoge.lua
--This program is Lua 5.1 script.
io.output("out.txt")

lineCount = 0
read = 100 --吐き出すファイルの行数を指定

if table.getn(arg) < 1 then --コマンドライン引数が足りない場合は終了
	print("引数不足")
	return
else
	io.input(arg[1]) --インプットファイルはコマンドライン引数で指定

	while lineCount < read do
		line = io.read()
		if (line == nil) then --ファイルの終端に到達したらコピー終了 
			break
		end

		io.write(line .. "\n")
		lineCount = lineCount + 1
	end
end

print(lineCount .. "行、コピーしました")

これでメモ帳とかエディタで行数を数えてほげほげしなくてもこのプログラムにかければ指定した行数だけコピーして吐き出してくれます。

実行時は

Windows:
>hoge.lua (コピーしたいファイル名)
Mac/Linux:
$lua hoge.lua (コピーしたいファイル名)
とします。

ちなみにこのプログラムのパフォーマンスですが、Core 2 Quad Q9000 +Win7では12000行のファイルの半分5100行分をコピーして吐き出すのに1秒掛かってないですΣ

速いですね!

ではこの辺で。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。