同じ文字列の最適化できた
ただの線形検索だからコンパイル遅くなっちゃうかな?と思ったけれど、体感的にはあまり変わった気がしない。
ソースはOpenHSPのライセンスとか確認した後ほどにでも公開したいと思います。
まあそこそこ大きいソースかな?と思うHDLで#cmpopt optinfo 1をつけてオブジェクトコード生成した実行結果が以下。
HSP code generator ver3.1
#HSP script preprocessor ver3.1 / onion software 1997-2007(c) #Use file [hspdef.as] #HSP code generator ver3.1 / onion software 1997-2007(c) #Delete func sqlite3_clear_bindings@sqle #Delete func sqlite3_snprintf@sqle #Delete func findnextfilea@m1 #Code size (64940) String data size (24180) param size (2848) #Vars (312) Labels (268) Modules (193) Libs (176) Plugins (0) #No error detected. (total 98934 bytes)
OpenHSP code generator ver3.2beta1(改造後)
#OpenHSP script preprocessor ver3.2beta1 / onion software 1997-2008(c) #Use file [hspdef.as] #OpenHSP code generator ver3.2beta1 / onion software 1997-2008(c) #Delete func sqlite3_clear_bindings@sqle #Delete func sqlite3_snprintf@sqle #Optimisation string [ ?%d ] #Optimisation string [SQL ERR] #Optimisation string [SQL ERR] #Optimisation string [SQL ERR] #Optimisation string [SQL ERR] #Optimisation string [SQL ERR] #Optimisation string ['] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [ ] #Delete func findnextfilea@m1 #Optimisation string [%c] #Optimisation string [%c] #Optimisation string [] #Optimisation string [ ] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [,] #Optimisation string [)] #Optimisation string [ ] #Optimisation string [\] #Optimisation string [\] #Optimisation string [,] #Optimisation string [,] #Optimisation string [)] #Optimisation string [] #Optimisation string [] #Optimisation string [<] #Optimisation string [SELECT replace(replace(replace(replace(] #Optimisation string [,'<','<'),'>','>'),'"','"'),'&','&')] #Optimisation string [\] #Optimisation string [\] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [*.HSP] #Optimisation string [hsp] #Optimisation string [] #Optimisation string [doclib] #Optimisation string [] #Optimisation string [*.TXT] #Optimisation string [txt] #Optimisation string [] #Optimisation string [doclib] #Optimisation string [] #Optimisation string [docs] #Optimisation string [*.HTM*] #Optimisation string [htm] #Optimisation string [] #Optimisation string [doclib] #Optimisation string [] #Optimisation string [*.HS] #Optimisation string [hs] #Optimisation string [BEGIN] #Optimisation string [hs] #Optimisation string [hsp] #Optimisation string [htm] #Optimisation string [COMMIT] #Optimisation string [] #Optimisation string [MultiByteToWideChar] #Optimisation string [] #Optimisation string [] #Optimisation string [<] #Optimisation string [>] #Optimisation string [&] #Optimisation string [<] #Optimisation string [>] #Optimisation string [ ] #Optimisation string [] #Optimisation string [CharLowerA] #Optimisation string [<script] #Optimisation string [] #Optimisation string [CharLowerA] #Optimisation string [SetWindowLongA] #Optimisation string [GetWindowRect] #Optimisation string [>] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [Value] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [ ] #Optimisation string [ ] #Optimisation string [hs] #Optimisation string [hs] #Optimisation string [hs ファイル] #Optimisation string [.hs] #Optimisation string [] #Optimisation string [ /hdlq:hdl:?reload=] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [ ] #Optimisation string [;-------------------------------------------------- ] #Optimisation string [ ] #Optimisation string [ %index] #Optimisation string [%index] #Optimisation string [] #Optimisation string [%index] #Optimisation string [] #Optimisation string [] #Optimisation string [%href] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [ ] #Optimisation string [] #Optimisation string [^] #Optimisation string [^p] #Optimisation string [^P] #Optimisation string [%href] #Optimisation string [] #Optimisation string [MS UI Gothic] #Optimisation string [MS UI Gothic] #Optimisation string [] #Optimisation string [無題] #Optimisation string [ファイル ] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [ ] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [html{ ] #Optimisation string [}html ] #Optimisation string [] #Optimisation string [ ] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string ["] #Optimisation string [] #Optimisation string [%index ] #Optimisation string [ ; 見出し を記入 ] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [#defcfunc] #Optimisation string [)] #Optimisation string [ ] #Optimisation string [ ] #Optimisation string [%index ] #Optimisation string [ ; 見出し を記入 ] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [, ] #Optimisation string [#cfunc] #Optimisation string [(] #Optimisation string [)] #Optimisation string [%prm ] #Optimisation string [ ] #Optimisation string [ ] #Optimisation string [%index ] #Optimisation string [ ; 見出し を記入 ] #Optimisation string [%prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 ] #Optimisation string [] #Optimisation string [%inst ; 解説文 を記入 ] #Optimisation string [%sample ; サンプルスクリプト を記入 ] #Optimisation string [%href ; 関連項目 を記入 ] #Optimisation string [%group ; グループ を記入 ] #Optimisation string [BEGIN] #Optimisation string [)] #Optimisation string [UPDATE HHWcfg SET Value=] #Optimisation string [)] #Optimisation string [COMMIT] #Optimisation string [GetLongPathNameA] #Optimisation string [MoveWindow] #Optimisation string [CharLowerA] #Optimisation string [CreateMenu] #Optimisation string [CreatePopupMenu] #Optimisation string [AppendMenuA] #Optimisation string [SetMenu] #Optimisation string [DrawMenuBar] #Optimisation string [)] #Optimisation string [] #Optimisation string [/hdlq:] #Optimisation string [hdlbase.xdb] #Optimisation string [Value] #Optimisation string [Value] #Optimisation string [] #Optimisation string [ が見つかりません。] #Optimisation string [] #Optimisation string [] #Optimisation string [)] #Optimisation string [hdl:?keyword=] #Optimisation string [] #Optimisation string [BEGIN] #Optimisation string [DELETE FROM Cache] #Optimisation string [,] #Optimisation string [)] #Optimisation string [COMMIT] #Optimisation string [hdl:?gohome] #Optimisation string [GoBack] #Optimisation string [GoForward] #Optimisation string [] #Optimisation string [\HDLTEMP_F.HTM] #Optimisation string [val] #Optimisation string [val] #Optimisation string [] #Optimisation string [ ] #Optimisation string [] #Optimisation string [Prm] #Optimisation string [Name] #Optimisation string [Prm] #Optimisation string [Name] #Optimisation string [ ] #Optimisation string [Prm] #Optimisation string [ - ] #Optimisation string ['] #Optimisation string [hdl:?] #Optimisation string [?] #Optimisation string [=] #Optimisation string [] #Optimisation string [hid] #Optimisation string [pid] #Optimisation string [hcat] #Optimisation string [dcat] #Optimisation string [scat] #Optimisation string [ /open:] #Optimisation string [gohome] #Optimisation string [SELECT ID FROM Help WHERE Name=] #Optimisation string [SELECT ID FROM Help WHERE lower(Name)=lower(] #Optimisation string [SELECT ID FROM Help WHERE Name=] #Optimisation string [SELECT ID FROM Help WHERE lower(Name)=lower(] #Optimisation string [)] #Optimisation string [ID] #Optimisation string [hdsrch] #Optimisation string [] #Optimisation string [SELECT ID FROM Help WHERE Name=] #Optimisation string [SELECT ID FROM Help WHERE lower(Name)=lower(] #Optimisation string [)] #Optimisation string [ID] #Optimisation string [BEGIN] #Optimisation string [ WHERE Name='WP'] #Optimisation string [)] #Optimisation string [UPDATE HDLcfg SET Value=] #Optimisation string [)] #Optimisation string [COMMIT] #Optimisation string [] #Optimisation string [<br>] #Optimisation string [ LIMIT 1] #Optimisation string [ID] #Optimisation string [Name] #Optimisation string [ - ] #Optimisation string [Summary] #Optimisation string [</a>] #Optimisation string ['>] #Optimisation string [</a>] #Optimisation string [..] #Optimisation string ['>] #Optimisation string [] #Optimisation string [] #Optimisation string [</small>] #Optimisation string [</small>] #Optimisation string [] #Optimisation string [] #Optimisation string [] #Optimisation string [\HDLTEMP_] #Optimisation string [hdlmain] #Optimisation string [, ] #Optimisation string [)] #Optimisation string [<title>] #Optimisation string [ ] #Optimisation string [<br>] #Optimisation string [\HDLTEMP_] #Optimisation string [.HTM] #Optimisation string [hdlmain] #Optimisation string [] #Optimisation string [] #Optimisation string [INSERT INTO Cache (Key, Data) VALUES ('$'||] #Optimisation string [, ] #Optimisation string [)] #Optimisation string [, ] #Optimisation string [)] #Optimisation string [</div> ] #Optimisation string [pid=] #Optimisation string [=] #Optimisation string [ (] #Optimisation string [] #Optimisation string [Name] #Optimisation string ['>] #Optimisation string [Name] #Optimisation string [ (] #Optimisation string [Ver] #Optimisation string [</div> ] #Optimisation string [] #Optimisation string [] #Optimisation string ['] #Optimisation string ['] #Optimisation string [(] #Optimisation string [)] #Optimisation string [<div class='menuidx1'> ] #Optimisation string [<h2>] #Optimisation string [ (] #Optimisation string [<h2>] #Optimisation string [<h2>] #Optimisation string [ (] #Optimisation string [<div class='menuidx2'> ] #Optimisation string [] #Optimisation string [Mod] #Optimisation string ['>] #Optimisation string [<div class='item'><a href='hdl:?] #Optimisation string [ID] #Optimisation string ['>] #Optimisation string [Name] #Optimisation string [Summary] #Optimisation string [</div> ] #Optimisation string [] #Optimisation string [</div> ] #Optimisation string [</body></html>] #Optimisation string [] #Optimisation string [\HDLTEMP_] #Optimisation string [.HTM] #Optimisation string [</a> ] #Optimisation string [</a> ] #Optimisation string [</div> ] #Optimisation string [ ] #Optimisation string [<div class='idxselect'> ] #Optimisation string [<a href='hdl:?dcat'>] #Optimisation string [</a> ] #Optimisation string [<a href='hdl:?scat'>] #Optimisation string [</a> ] #Optimisation string [</div> ] #Optimisation string [<div class='idxselect'> ] #Optimisation string [Mod] #Optimisation string [<strong>] #Optimisation string [IDs] #Optimisation string ['>] #Optimisation string [ <small>] #Optimisation string [IDs] #Optimisation string [</div> ] #Optimisation string [<tr><td class='idxsub' colspan=2>] #Optimisation string [</tr> ] #Optimisation string ['>] #Optimisation string [ <small>] #Optimisation string [IDs] #Optimisation string [***] #Optimisation string [] #Optimisation string [</tr> ] #Optimisation string ['>] #Optimisation string [</tr> ] #Optimisation string [] #Optimisation string [</table></div> ] #Optimisation string [ドキュメント] #Optimisation string [!=] #Optimisation string [dcat=] #Optimisation string [サンプル] #Optimisation string [=] #Optimisation string [scat=] #Optimisation string [ › ] #Optimisation string [] #Optimisation string [<p><a href='hdl:?hdsrch=] #Optimisation string ['>« この一覧をサイドビューへ</a></p> ] #Optimisation string [<div class='idxselect'> ] #Optimisation string [<a href='hdl:?hcat'>] #Optimisation string [</a> ] #Optimisation string [<strong>] #Optimisation string [</strong> ] #Optimisation string [<a href='hdl:?scat'>] #Optimisation string [</a> ] #Optimisation string [<a href='hdl:?dcat'>] #Optimisation string [</a> ] #Optimisation string [<strong>] #Optimisation string [</strong> ] #Optimisation string [</div> ] #Optimisation string [<div class='idxselect'> ] #Optimisation string ['hsp' GROUP BY Catego ORDER BY lower(Catego)] #Optimisation string [<strong>] #Optimisation string [ <small>] #Optimisation string [IDs] #Optimisation string [</small></strong> ] #Optimisation string ['>] #Optimisation string [ <small>] #Optimisation string [IDs] #Optimisation string [</small></a> ] #Optimisation string [</div> ] #Optimisation string [<div class='index'><table class='index' cellspacing=0> <tr><td class='idxhead1' colspan=2>] #Optimisation string [</tr> ] #Optimisation string [ID] #Optimisation string ['>] #Optimisation string [Path] #Optimisation string [</tr> ] #Optimisation string [ID] #Optimisation string [</table></div> ] #Optimisation string [Path] #Optimisation string [\] #Optimisation string [Type] #Optimisation string [htm] #Optimisation string [hdlmain] #Optimisation string [Title] #Optimisation string [Type] #Optimisation string [hsp] #Optimisation string [<p class='summary'>] #Optimisation string [<p><span class='symbol'>] #Optimisation string [</span></p> ] #Optimisation string [<pre class='para'>] #Optimisation string [</pre> ] #Optimisation string ['>] #Optimisation string [html{ ] #Optimisation string [ ] #Optimisation string [<pre class='para'>] #Optimisation string [</pre> ] #Optimisation string [</div> ] #Optimisation string [<pre class='script'>] #Optimisation string [</pre> ] #Optimisation string ['>] #Optimisation string ['>] #Optimisation string [<tr><td><a href='hdl:?hid=] #Optimisation string ['>] #Optimisation string [</tr> ] #Optimisation string ['>] #Optimisation string [</table></div> ] #Optimisation string [)</h2> ] #Optimisation string [ID] #Optimisation string ['>] #Optimisation string [Title] #Optimisation string [ID] #Optimisation string ['>] #Optimisation string [Title] #Optimisation string [</a><br>] #Optimisation string [</p> ] #Optimisation string [<div class='para'><table> ] #Optimisation string ['>] #Optimisation string [</a></tr> ] #Optimisation string [</tr> ] #Optimisation string [</tr> ] #Optimisation string ['>] #Optimisation string [</a></tr> ] #Optimisation string [</tr> ] #Optimisation string [</tr> ] #Optimisation string [</tr> ] #Optimisation string [</tr> ] #Optimisation string [] #Optimisation string [</li>] #Optimisation string [</tr> ] #Optimisation string [>] #Optimisation string [</table></div> ] #Optimisation string [] #Optimisation string [<p class='summary'>] #Optimisation string [</p> ] #Optimisation string [<p>] #Optimisation string [</p> ] #Optimisation string [<tr><td><a target='_blank' href="] #Optimisation string [<tr><td><a target='_blank' href="] #Optimisation string [<tr><td><a target='_blank' href="] #Optimisation string [</table></div> ] #Optimisation string [<div class='para'><table> ] #Optimisation string [</tr> ] #Optimisation string [</table></div> ] #Code size (64940) String data size (20521) param size (2848) #Vars (312) Labels (268) Modules (193) Libs (176) Plugins (0) #No error detected. (total 95275 bytes)