2019年4月27日土曜日

LSLバックステージがネット上から消えたので 要約掲載 高速化編

のでまぁテクニックのところだけでも抜粋して
何回かに分けて乗っけとくこととする

でまぁ更に適当に抜粋に抜粋して要約する

3.1高速化手法

3.1.1定数演算は演算結果を書く

なんかLSLコンパイラで計算結果が変わらない定数演算も
そのままアセンブラコードにしちゃうらしいので
定数計算はコメントアウトして計算結果だけ代入しとけとのこと

ただこれも過剰にやると可読性が死ぬので
秒単位で演算時間が変わるような長大ループとか

ミリ秒単位で処理時間圧縮したい場合に有用

ワイの場合メモリに余裕あれば初期化処理してグローバル変数にぶっこむかな

変数間移動とハードコーディング数値の代入では前者が早い

3.1.2ループ中で計算結果の変わらない異処理はループの外に出す

for文とかで比較対象の固定数値をいちいちllList2とか使うと
なんかループの回数分list2が実行されちゃうらしく

先に変数に代入しとけということのようだ

これはllList2系命令の処理の食われ方からしても妥当やな


まぁこれもうちょい短縮方法ある

Listに対して固定でなんかするループ処理の場合
リスト長の変数自体をインクリメントなりデクリメントなりして
whileでぶん回すと結構な短縮になる

llist length = llGetListLength(Holge);

do{
    (何らかの処理)
    --length;
}while(hoge>-1);

これまぁリンクセットダンプとかでも使える


3.1.3 短い処理は インライン展開

なんでもかんでも関数定義して投げるなって話っぽい

概ね10演算子辺りがボーダーらしいので

複数箇所から呼び出すことがわかってる処理以外は
可能な限りユーザー関数使うなみたいな感じだな

これも秒オーダーで処理時間変わるループや
ミリ秒オーダーでイベント終わらせる必要がある場合以外は
割と無視していいが 最後の詰めに使えるな


3.1.4 インクリメント・デクリメント

i++;
より
++i;
の方がアセンブラコードになったときに2命令文圧縮できるとのこと
これは普段使いではくせにしちゃっていいと思う

で更に

ビット反転した後に符号反転すると+1したことになるとかで

a=-(~a); // ++a と等価

符号反転してからビット反転すると-1したことになるとかで

b=~(-b); // --b と等価


という記述方法が紹介されているけど
これも山ほど動かしたり
ミリ秒オーダーじゃないかぎりそこまでは不要かなぁ


3.1.5 ローカル変数は宣言時に初期化する

これはまぁちょっとわかりにくいな

ゼロやNULLで宣言しておく分には関係ない話
特定の数値代入して初期化する際に
宣言と代入と分けずに 宣言即代入したほうが早い

integer i;
i=5;

とするより

integer i =5;

こっちのほうが2命令文早いとのこと

これもミ(ry

3.1.6 同じ値を複数の変数に代入

同じ数値なら=でチェーン記述したほうがええということらしい

a = 0;
b = 0;

よりも

a = b = 0;

のほうが効率的とのこと

3.1.7 ローカル変数VSグローバル変数

ローカル変数の方が確保と開放の処理分ちょい重いとのこと

これは体感としてスタックヒープコリジョンの対策でちょい有効
ループカウンタの変数とか文字列入れる一時変数とか
その辺をグローバル定義するとメモリ圧縮になることもなる


3.1.8 リストへの値の追加

リストへ値を一つ追加する場合は []で囲わなくても
そのまま+=でいけるとのこと

これもリスト初期化処理とかで便利かなぁというところだけど
可読性とのトレードオフがあるから使い所は選ぶね

3.1.9 文字列定数、リスト定数のグローバル変数宣言

これもあれだな グローバル変数定義だと
ローカル変数定義時みたいに確保と削除が無い分

ポインタ参照的な挙動になって高速化するというやつだな

1.0.10 ビット演算を用いた、条件判定の高速化

ちょっとこれ要約するの無理だなぁ
integer値が32までならビット演算で複数の範囲判定が同時に行えるという話

3.1.11 list の長さの非0 判定

listの長さがゼロで無い判定
(lst!=[])
listの長さがゼロの判定
(lst==[])

3.1.12 llGetListLength() [互換性に注意]

ちょっとこれ衝撃だなぁ

integer len = llGetListLength(a);
これは
integer len = (a != []);

こう置き換え可能で listの!=演算が単純なブーリアン値ではなく
リストの長さの差分を計算するプログラムになってるんだってさ

で更に空リストをグローバル変数定義すれば高速化するとのこと

list null_list = []; // グローバル変数として宣言しておく
integer len = (a!=null_list);

ただしこの処理自体を関数化すると相殺されるらしいので
使い所ってことだと結構微妙かなぁ

でまぁこれこれちょっと今使えるかどうかわかんないなぁ


//-------------------------------------------------------------------------------

高速化の章の話はこれで終わり

常用するのはインクリメント・デクリメントと
あと代入処理のチェーンくらいかなぁ

計算結果定数の記述はまぁ詰めでやるくらいでいいかねと


以上

2019年4月1日月曜日

20191031 [怪文書]コンテンツ業界における貨幣経済圏と感情経済圏のお話

くっそ長くなったので怪文書として04/01投稿とする

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

正直ソーシャルベースでの
コンテンツの話ということだとねぇ

買う側が許容するクオリティの最低ラインて
案外高いのよ

でまぁそれ未満だとそもそも相手にされなくて
じゃぁどうすればええのかって話だと

一部のオタクさん方面の人らが
”ごまかし”とか”ズル”とか
言っちゃうような手法が必要になる

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

アマチュアクリエイティブの周りだと
そういうハックやテックを
極端に嫌う人たちがおって

じゃそういう人らが作るもんが
売れるようなコンテンツになってるかというと
ならねぇのよね 工数ベースで既に赤字だから

ほいでまぁそこで面倒な話になる

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

要はなんでそういうの使わないのかという話

そういうの使うとね
対象市場がグローバルになっちゃってさ

世界のトップランナーと戦うことを強いられるの
戦うステージが上がっちゃうのよね

クラスやサークルで一番絵がうまい程度の人間でも
pixivランキングとかだと100位入れない的な話

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

なのでやり方としては

”やり方を評価するニッチなコミュニティ”や
”そもそものコンテンツが少ないジャンル”
に向けてコンテンツ供給するという
生存戦略が考えられるわけなんだけど

そもそもそんな小規模なところで
生きられるだけの対価が得られるのか?と

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

そのへんでまぁお話としては
仮の話としてなんだけど

”貨幣経済圏”と”感情経済圏”が大雑把にあるの

両方ともある程度等価交換が成立するの
でまぁ代表例としてあくまで現状での話ということだと

MMDは感情経済圏で
VRChatは大筋で貨幣経済圏なのよ

でまぁなんというかそこでも面倒な話がある

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

感情経済圏ってさ

得られる対価で物理身体の維持が出来ねぇのよ
というか貨幣経済的な対価を得ることが

現状の法律や各種コンテンツガイドラインや
慣例では実質的に不可能なのよ

だから感情経済圏って名称を仮で使うわけなのだが
じゃぁ具体的な対価と価格って何よ?という話

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

ほんともう大雑把に大げさに表現するけど

星での5段階評価が存在します

星0は興味なし 星1は25点 星2は50点
星3は100点 星4は400点 星5は5000兆点

でこれには実際のところマイナスの星もあるのだが
”感情の振れ幅”ということだと
マイナスの星もそれはそれで価値が存在するの

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

でまぁ基本 感情経済圏では

そもそもの評価基準が個人で違うわけよ
等価交換という話だと星4以上のものにしか
価値があるように見えないように見えて

実際には5000兆点が1単位として取引されてるのね

いいねが+5000兆点 badが-5000兆点 興味なしが0

で最近のトレンドは”表示しない”手法

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

要は 5000兆点以外の評価ボタンが存在しないの

等価交換の手法として
そもそも5000兆点の評価を対価として出さないやつには
コンテンツを供給しません

という感じの話になる
まぁちょっとこの辺は面倒な話だなぁと

ちなみに感情経済圏での
個人資産額は∞です 無限大

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

ほんで 感情経済圏で活動する人間に対して

物理身体を維持するコストを賄う方法として

太古から存在する
パトロン制度とかそういうお話なわけよと

自分の経済状況から可能な限りの”全て”を
貨幣経済的な対価で支払うという仕組み

なので本来そこに”コスパ”みたいなのは存在しない

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

随分話が長くなっちゃったねぇ

まぁ要は 実際のところの話としては

感情経済圏の話ということだと
どんな値札がついていようが
買うか 買わないか 以外の選択肢がないの
財布は常に無限大なので

でまぁ 貨幣経済的に困窮していて
買えない というのはもちろんあるんだけど
それは別のお話なの

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

感情経済圏の財布は実質無限大で
そもそもの値札が存在しない
という話をしたところで

貨幣経済圏の話だと

”買うに値するかどうか”を値踏みするようになる
でまぁそうなると

そこで星の5段階評価が出てくるわけよ
要は貨幣経済圏のコンテンツに関しては
”タダでも要らない”が出てくるわけさという

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

もちろんあれよ
”タダでも要らないが仕方なく使ってやる”
みたいなことを
コンテンツに関して言う連中は
相手にしちゃダメよそもそも

ほいでまぁ貨幣経済圏だと
金払うのは最低限の礼儀で
”二度目はない”って切るのもそれはそれで正当なのよ

後払い方式は無理だねぇそういう意味だと