2008年07月26日
リストに関するハックの検証
l = (l = []) + l + "0123456789"; のようにすると より多くの要素を保持することができる
-----
という ハック があるらしいので試してみた
-----
まず 普通にやると上限はいくつか試してみた
-----
使ったのは下記のスクリプト
-----
-----
336個まで保持できた
-----
そこで ハック を使ってみる
-----
リストは こう
-----
実行するとこうなった
-----
-----
481個 331個と比較すると 1/3 多く保持できている なるほど
-----
実際 中に要素が含まれているか確認すると
-----
-----
ちゃんと入っている... 意味的には 最初に クリアしているので 1つしか保持していないんじゃないかと思われるのだが w
-----
という ハック があるらしいので試してみた
-----
まず 普通にやると上限はいくつか試してみた
-----
使ったのは下記のスクリプト
//実行するとこうなった
// File: list_test.lsl
// Date Author number of nodes
// 2008/7/25 walkinglint 12
//
integer i = 0;
list l = [];
default {
on_rez(integer param) {
llResetScript();
}
touch_start(integer total_number) {
llOwnerSay((string)llGetFreeMemory());
for (i = 0; i < 0x7fffffff; i++) {
l = l + "0123456789";
if (llGetFreeMemory() < 1000) {
llOwnerSay((string)i);
}
}
}
}
-----
-----
336個まで保持できた
-----
そこで ハック を使ってみる
-----
リストは こう
//代入部分だけが異なっている
// File: list_test.lsl
// Date Author number of nodes
// 2008/7/25 walkinglint 12
//
integer i = 0;
list l = [];
default {
on_rez(integer param) {
llResetScript();
}
touch_start(integer total_number) {
llOwnerSay((string)llGetFreeMemory());
for (i = 0; i < 0x7fffffff; i++) {
l = (l = []) + l + "0123456789";
if (llGetFreeMemory() < 1000) {
llOwnerSay((string)i);
}
}
}
}
-----
実行するとこうなった
-----
-----
481個 331個と比較すると 1/3 多く保持できている なるほど
-----
実際 中に要素が含まれているか確認すると
-----
-----
ちゃんと入っている... 意味的には 最初に クリアしているので 1つしか保持していないんじゃないかと思われるのだが w
Posted by walkinglint at 16:02│Comments(0)
│walking のスクリプティング講座