というのも、、、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 さん、本当にありがとうー
早速、試してもらえて、
返信削除嬉しいです。
実は、この事を伝えるために昨晩雷神に行ったんです。
紹介して良かったです。