「★ソース最適化」の編集履歴(バックアップ)一覧はこちら
「★ソース最適化」(2010/01/21 (木) 18:27:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名:fuji、五十六
引用元:[[なでしこプログラム掲示板「ソース高速HTML化」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=444&rev=&no=0]]
勝手に改変
*概要
ソースを最適化します。
具体的にはこんな変化があります。(↑が変化前 ↓が変化後)
「てすてす」
(『てすてす』)
「あいうえお{変数A}かきくけこ」。
(『あいうえお』&(変数A)&『かきくけこ』)。
これの作成にあたってfujiさんの[[★ソース高速HTML化]]を参考にさせて頂きました。
というかほとんど流用です。ごめんなさい。
*解説
※最適化の効果を確認してみるプログラム
引用+改変:[[なでしこプログラム掲示板「メモリ不足??」ツリーより 焼きそばさんの検証プログラム>http://www.himanavi.net/cgi/nade-bbs2/cbbs.cgi?mode=one&number=7258&type=7250&space=120&no=0]]
ほげほげ=「hoge
ほげ
ホゲ」。
A=システム時間。
100000回
親回数=回数
TEMP=「{母艦パス}てすてす{ほげほげ[0]}」。
もし、回数%1000=0ならば母艦のタイトルは回数。
A=システム時間-A。
「最適化前 {A}」を表示。
A=システム時間。
100000回
親回数=回数
TEMP=母艦パス&「てすてす」&ほげほげ[0]。
もし、回数%1000=0ならば母艦のタイトルは回数。
A=システム時間-A。
「最適化後 」&Aを表示。
***引数
ソース:ソース本文(≠.nakoへの絶対パス)
***返り値
最適化されたソース
*サンプルプログラム
A=(「.nako」のファイル選択)を開く。
A=Aをソース最適化。
Aを言う。
*//本体
●ソース最適化(ソースを|ソースの)
'定数
文字列色は"#000080"
# CR=CHR(13)
//「"”『``{{・/*##//'’※
囲み文字=`「
"
”
`&"『
`
`"&`
{
{
/*
・
#
#
//
'
’
※`
閉じ文字=`」"”`&"』``"&`}}`#*/
囲み文字数=要素数(囲み文字)。
最初部分=「」
(ソース!=『』)の間
最小文字数=文字数(ソース)
番号=-1
囲み文字を反復
ソースで対象が何文字目。
もし、(それ<最小文字数)かつ(それ>0)なら
最小文字数=それ。
番号=回数-1
次囲み文字=対象。
#関数を探す
「●{~}■{~}*」を反復
ソースを"^\t* * *{対象}"で正規表現マッチ。
それ=それ\0。
もし、(それ<>「」)かつ(何文字目(ソース,それ)<最小文字数)なら
番号=囲み文字数+回数-1
次囲み文字=対象。
#次の囲み文字を言う。
もし、番号=-1なら、抜ける。#囲み文字が見つからなかった場合。
ソースの次囲み文字までを切り取る。
最初部分=最初部分&それ。
#囲み文字に応じて切り取り
もし、番号<=9ならば
もし、番号<=8ならば、
もし、番号=8ならば
次閉じ文字="*/"
違えば
次閉じ文字=MID(閉じ文字,番号+1,1)
違えば、
もし、(何文字目(ソース," "))<(何文字目(ソース,改行))ならば
次閉じ文字=" "
違えば
次閉じ文字=改行。
違えば、次閉じ文字=改行
もし、次閉じ文字=改行なら、
ソースの改行までを切り取る。
切り取り部分=「{次囲み文字}{それ}」
ソース=改行&ソース
違えば、
ソースの次閉じ文字までを切り取る。
切り取り部分=「{次囲み文字}{それ}{次閉じ文字}」。
もし、番号<6なら
//ここから文字列
文字列判定=切り取り部分の1から1文字抜き出す。
もし、(文字列判定=『「』)ならば
切り取り部分=切り取り部分の『{』を`』&(`に置換。
切り取り部分=切り取り部分の『}』を`)&『`に置換。
切り取り部分=切り取り部分の『{』を`』&(`に置換。
切り取り部分=切り取り部分の『}』を`)&『`に置換。
切り取り部分の1から1文字削除。切り取り部分=`(『`&切り取り部分。
切り取り部分から1文字右端削除。切り取り部分=切り取り部分&`』)`。
切り取り部分=切り取り部分の`&『』&`を空に置換。
切り取り部分=切り取り部分の`『』&`を空に置換。
切り取り部分=切り取り部分の`&『』`を空に置換。
もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
もし、(文字列判定=『"』)ならば
切り取り部分=切り取り部分の『{』を『`&(』に置換。
切り取り部分=切り取り部分の『}』を『)&`』に置換。
切り取り部分=切り取り部分の『{』を『`&(』に置換。
切り取り部分=切り取り部分の『}』を『)&`』に置換。
切り取り部分の1から1文字削除。切り取り部分=『(`』&切り取り部分。
切り取り部分から1文字右端削除。切り取り部分=切り取り部分&『`)』。
切り取り部分=切り取り部分の『&``&』を空に置換。
切り取り部分=切り取り部分の『``&』を空に置換。
切り取り部分=切り取り部分の『``&』を空に置換。
もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
最初部分=最初部分&切り取り部分。
完成文=最初部分&ソース。
完成文を戻す。
----
- WinAPI利用してるとソースがむちゃくちゃになるかも・・・いずれ直します -- 管理人 (2009-01-06 22:27:21)
#comment()
----
*情報
作者名:fuji、五十六
引用元:[[なでしこプログラム掲示板「ソース高速HTML化」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=444&rev=&no=0]]
勝手に改変
*概要
ソースを最適化します。
具体的にはこんな変化があります。(↑が変化前 ↓が変化後)
「てすてす」
(『てすてす』)
「あいうえお{変数A}かきくけこ」。
(『あいうえお』&(変数A)&『かきくけこ』)。
これの作成にあたってfujiさんの[[★ソース高速HTML化]]を参考にさせて頂きました。
というかほとんど流用です。ごめんなさい。
*解説
※最適化の効果を確認してみるプログラム
引用+改変:[[なでしこプログラム掲示板「メモリ不足??」ツリーより 焼きそばさんの検証プログラム>http://www.himanavi.net/cgi/nade-bbs2/cbbs.cgi?mode=one&number=7258&type=7250&space=120&no=0]]
ほげほげ=「hoge
ほげ
ホゲ」。
A=システム時間。
100000回
親回数=回数
TEMP=「{母艦パス}てすてす{ほげほげ[0]}」。
もし、回数%1000=0ならば母艦のタイトルは回数。
A=システム時間-A。
「最適化前 {A}」を表示。
A=システム時間。
100000回
親回数=回数
TEMP=母艦パス&「てすてす」&ほげほげ[0]。
もし、回数%1000=0ならば母艦のタイトルは回数。
A=システム時間-A。
「最適化後 」&Aを表示。
***引数
ソース:ソース本文(≠.nakoへの絶対パス)
***返り値
最適化されたソース
*サンプルプログラム
A=(「.nako」のファイル選択)を開く。
A=Aをソース最適化。
Aを言う。
*//本体
●ソース最適化(ソースを|ソースの)
'定数
文字列色は"#000080"
# CR=CHR(13)
//「"”『``{{・/*##//'’※
囲み文字=`「
"
”
`&"『
`
`"&`
{
{
/*
・
#
#
//
'
’
※`
閉じ文字=`」"”`&"』``"&`}}`#*/
囲み文字数=要素数(囲み文字)。
最初部分=「」
(ソース!=『』)の間
最小文字数=文字数(ソース)
番号=-1
囲み文字を反復
ソースで対象が何文字目。
もし、(それ<最小文字数)かつ(それ>0)なら
最小文字数=それ。
番号=回数-1
次囲み文字=対象。
#関数を探す
「●{~}■{~}*」を反復
ソースを"^\t* * *{対象}"で正規表現マッチ。
それ=それ\0。
もし、(それ<>「」)かつ(何文字目(ソース,それ)<最小文字数)なら
番号=囲み文字数+回数-1
次囲み文字=対象。
#次の囲み文字を言う。
もし、番号=-1なら、抜ける。#囲み文字が見つからなかった場合。
ソースの次囲み文字までを切り取る。
最初部分=最初部分&それ。
#囲み文字に応じて切り取り
もし、番号<=9ならば
もし、番号<=8ならば、
もし、番号=8ならば
次閉じ文字="*/"
違えば
次閉じ文字=MID(閉じ文字,番号+1,1)
違えば、
もし、(何文字目(ソース," "))<(何文字目(ソース,改行))ならば
次閉じ文字=" "
違えば
次閉じ文字=改行。
違えば、次閉じ文字=改行
もし、次閉じ文字=改行なら、
ソースの改行までを切り取る。
切り取り部分=「{次囲み文字}{それ}」
ソース=改行&ソース
違えば、
ソースの次閉じ文字までを切り取る。
切り取り部分=「{次囲み文字}{それ}{次閉じ文字}」。
もし、番号<6なら
//ここから文字列
文字列判定=切り取り部分の1から1文字抜き出す。
もし、(文字列判定=『「』)ならば
切り取り部分=切り取り部分の『{』を`』&(`に置換。
切り取り部分=切り取り部分の『}』を`)&『`に置換。
切り取り部分=切り取り部分の『{』を`』&(`に置換。
切り取り部分=切り取り部分の『}』を`)&『`に置換。
切り取り部分の1から1文字削除。切り取り部分=`(『`&切り取り部分。
切り取り部分から1文字右端削除。切り取り部分=切り取り部分&`』)`。
切り取り部分=切り取り部分の`&『』&`を空に置換。
切り取り部分=切り取り部分の`『』&`を空に置換。
切り取り部分=切り取り部分の`&『』`を空に置換。
もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
もし、(文字列判定=『"』)ならば
切り取り部分=切り取り部分の『{』を『`&(』に置換。
切り取り部分=切り取り部分の『}』を『)&`』に置換。
切り取り部分=切り取り部分の『{』を『`&(』に置換。
切り取り部分=切り取り部分の『}』を『)&`』に置換。
切り取り部分の1から1文字削除。切り取り部分=『(`』&切り取り部分。
切り取り部分から1文字右端削除。切り取り部分=切り取り部分&『`)』。
切り取り部分=切り取り部分の『&``&』を空に置換。
切り取り部分=切り取り部分の『``&』を空に置換。
切り取り部分=切り取り部分の『``&』を空に置換。
もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
最初部分=最初部分&切り取り部分。
完成文=最初部分&ソース。
完成文を戻す。
----
- WinAPI利用してるとソースがむちゃくちゃになるかも・・・いずれ直します -- 管理人 (2009-01-06 22:27:21)
- http://www.example.com エラー -- http://www.example.com (2010-01-21 18:27:57)
#comment()
----