ソラマメブログ
www.flickr.com
This is a Flickr badge showing public photos from Flickr tagged with second life. Make your own badge here.
Information
メタコマースおすすめ商品




オーナーへメッセージ

2007年12月19日

LSL 日本語処理・・・本当に幸せになるかも

以前ご紹介した Alissa さんの日本語対応 SL Viewer 「その場入力」 ですが、、、ものすごいことになりました。

というのも、、、LSL で日本語を直接扱うことができるようになったんです。

これ、、、ものすごくインパクトが大きいんですよ。list 型のオブジェクトに直接日本語を入れることもできるんです。

この利点は

1) 日本語のメッセージがどんなものかをエンコードされていない「文字(=日本語)」で確認可能
2) エンコードされた文字数よりも少ないのでメモリの節約になる
3) デコードするための関数がいらないので、その分処理の高速化とメモリの節約になる

ほんと・・・すごいです!
そこでどのくらいメモリの節約になるかを試した結果が以下です。

Alissa バージョンだと以下のように LSL を書くことができます。

--- LSL code begin -------------------------------------------

list msgList = ["これはテストです","日本語がリストに入ります",
"Alissa さんサイコー","メモリの節約にもなります","確認も楽です"];

default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        integer i;
        for(i=0; i<5; ++i) {
            llSay(0, llList2String(msgList,i));
            llSleep(0.5);
        }
        llSay(0,(string)llGetFreeMemory());
    }
}

--- End of source ---------------------------------------------

最後に FreeMemory をとって Say してますが、その結果は以下。



15,695 バイトのメモリが残った状態ですよね。

これを従来の Base64 を使った処理にします。ソースと結果が以下。

-----------------------------------------------------------------------------

list msgList = ["44GT44KM44Gv44OG44K544OI44Gn44GZ","
5pel5pys6Kqe44GM44Oq44K544OI44Gr5YWl44KK44G+44GZ",
"QWxpc3NhIOOBleOCk+OCteOCpOOCs+ODvA==",
"44Oh44Oi44Oq44Gu56+A57SE44Gr44KC44Gq44KK44G+44GZ",
"56K66KqN44KC5qW944Gn44GZ"];

default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        integer i;
        for(i=0; i<5; ++i) {
            llSay(0, llBase64ToString(llList2String(msgList,i)));
            llSleep(0.5);
        }
        llSay(0,(string)llGetFreeMemory());
    }
}

------------------------------------------------------------------------------



15,614 バイトのフリーメモリーw

これを URLEscape にすると・・・・
-----------------------------------------------------------------------------
list msgList = ["%E3%81%93%E3%82%8C%E3%81%AF%E3
%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%81
%99","%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81
%8C%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AB
%E5%85%A5%E3%82%8A%E3%81%BE%E3%81%99",
"Alissa%20%E3%81%95%E3%82%93%E3%82%B5%E3%
82%A4%E3%82%B3%E3%83%BC",
"%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AE%E7
%AF%80%E7%B4%84%E3%81%AB%E3%82%82%E3%81
%AA%E3%82%8A%E3%81%BE%E3%81%99",
"%E7%A2%BA%E8%AA%8D%E3%82%82%E6%A5%BD%E3
%81%A7%E3%81%99"];

default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        integer i;
        for(i=0; i<5; ++i) {
            llSay(0, llUnescapeURL(llList2String(msgList,i)));
            llSleep(0.5);
        }
        llSay(0,(string)llGetFreeMemory());
    }
}
---------------------------------------------------------------------------



こんな単純なスクリプトでも、日本語のためのテキストのバイト数と、ちょっとだけどデコードする関数分のメモリの節約が・・・
なんと、最大 15,695 -> 15,337 で 358 バイトも節約w

すばらしい・・・

みんなで JIRA にいって、「早く Alissa さんのコードを採用して~」と書き込みしたいくらいw

ほんと、Alissa さん、良い仕事してます!

で・・・ この修正は Alissa さんが Linden の JIRA に投稿してます。
Payment Info User じゃないとだめかもしれませんが、、、、みんなで(といっても、日本の人だけしかわからない・・・だから・・)これがすばらしい!と投票しませんか。

まず、、、JIRA の Alissa さんの投稿のページにいきます。
http://jira.secondlife.com/browse/VWR-3857

[追記] Voting(投票) するには SL のアカウントでログインする必要があります。

以下の画面で赤で囲んでいる [Voting] をクリックします。


以下の画面で赤で囲んでいる [Add] をクリックします。



これで完了ですー

Alissa さん、本当にありがとうー 

この記事へのトラックバックURL

この記事へのコメント
早速、試してもらえて、
嬉しいです。

実は、この事を伝えるために昨晩雷神に行ったんです。
紹介して良かったです。
Posted by Tvd at 2007年12月19日 09:27
※このエントリーではブログ管理者の設定により、ブログ管理者に承認されるまでコメントは反映されません