差分

編集の要約なし
20行目: 20行目:  
**URIリンク
 
**URIリンク
 
**パイプ付きリンク(<nowiki>[[A|B]]</nowiki>)
 
**パイプ付きリンク(<nowiki>[[A|B]]</nowiki>)
 +
**取消線(== 〜 ==)
 
**強制改行(<nowiki>{{br}}</nowiki>)
 
**強制改行(<nowiki>{{br}}</nowiki>)
 
**Amazonリンク
 
**Amazonリンク
 +
**整形済みテキスト(行頭がスペースまたはタブ。<<< 〜 >>> には現在は未対応)
 +
**引用(行頭が "")
 
**コメント行
 
**コメント行
 
*不要要素の削除
 
*不要要素の削除
 
**<nowiki>{{toc}}</nowiki>など
 
**<nowiki>{{toc}}</nowiki>など
*見出しレベルを順次下降するように調整する機能
+
*見出しレベル調整
 +
**見出しレベルを順次下降するように調整
 +
*リンク解析
 +
**リンク切れが生じやすい「英字名ページへのリンク」、「WikiName」、「括弧を含む名前のページへのリンク」の一覧表示
 
**有効/無効設定可
 
**有効/無効設定可
 
*ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
 
*ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
31行目: 37行目:     
== 更新履歴 ==
 
== 更新履歴 ==
 +
*2012年7月31日(Ver. 2.0.2)
 +
**見出しレベル調整のアルゴリズムを変更。
 +
**URIリンクを含む定義リストの変換に関するバグ(再発)を修正。
 
*2012年7月7日(Ver. 2.0.1)
 
*2012年7月7日(Ver. 2.0.1)
 
**表の行末に空列を生成しないよう修正。
 
**表の行末に空列を生成しないよう修正。
73行目: 82行目:  
*2012年5月7日(Ver. 1.0)
 
*2012年5月7日(Ver. 1.0)
 
**初公開。
 
**初公開。
 +
 +
== 技術的メモ ==
 +
 +
=== 見出しレベル調整の速度 ===
 +
ランダムなレベルの見出し100,000個の変換に要した時間。表記がない場合、単位はms。
 +
 +
環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。
 +
 +
==== <code>investigateHeadings()</code>(ver. 2.0.1以前) ====
 +
 +
{| class="wikitable"
 +
|-
 +
! 関数 / # !! 1 !! 2 !! 3
 +
|-
 +
! 全体時間
 +
| style="text-align: right" | 1495 || style="text-align: right" | 1495 || style="text-align: right" | 1485
 +
|-
 +
! l153: <code>hasDescendants()</code>
 +
| style="text-align: right" | 59 || style="text-align: right" | 59 || style="text-align: right" | 59
 +
|-
 +
! <code>hasDescendants()</code> の回数(回)
 +
| style="text-align: right" | 244471 || style="text-align: right" | 244567 || style="text-align: right" | 244606
 +
|-
 +
! l156: <code>hasChildren()</code>
 +
| style="text-align: right" | 26 || style="text-align: right" | 26 || style="text-align: right" | 26
 +
|-
 +
! l160: <code>newHeading()</code>
 +
| style="text-align: right" | 167 || style="text-align: right" | 169 || style="text-align: right" | 177
 +
|-
 +
! l169: <code>investigateHeadings()</code>
 +
| style="text-align: right" | 198 || style="text-align: right" | 198 || style="text-align: right" | 198
 +
|-
 +
! l233: <code>adjustHeadingLevel()</code>
 +
| style="text-align: right" | 79 || style="text-align: right" | 80 || style="text-align: right" | 78
 +
|-
 +
! l281: <code>convertHeadings()</code>
 +
| style="text-align: right" | 276 || style="text-align: right" | 276 || style="text-align: right" | 274
 +
|-
 +
! l494: <code>convertLineByLine()</code>
 +
| style="text-align: right" | 1231 || style="text-align: right" | 1226 || style="text-align: right" | 1236
 +
|}
 +
 +
処理速度は実用的だが、<code>hasDescendants()</code> の呼び出し回数が無駄に多い。
 +
 +
==== 幅優先探索(リスト構造)(ver. 2.0.2試作) ====
 +
 +
{| class="wikitable"
 +
|-
 +
! 関数 / # !! 1 !! 2 !! 3
 +
|-
 +
! 全体時間
 +
| style="text-align: right" | 7022 || style="text-align: right" | 7026 || style="text-align: right" | 7166
 +
|-
 +
! l155: <code>appendTo()</code>
 +
| style="text-align: right" | 5422 || style="text-align: right" | 5360 || style="text-align: right" | 5518
 +
|-
 +
! l173: <code>newHeading()</code>
 +
| style="text-align: right" | 445 || style="text-align: right" | 458 || style="text-align: right" | 461
 +
|-
 +
! l190: <code>appendHeading()</code>
 +
| style="text-align: right" | 5491 || style="text-align: right" | 5432 || style="text-align: right" | 5586
 +
|-
 +
! l229: <code>headingsBFS()</code>
 +
| style="text-align: right" | 436 || style="text-align: right" | 434 || style="text-align: right" | 436
 +
|-
 +
! l469: <code>convertLineByLine
 +
| style="text-align: right" | 6764 || style="text-align: right" | 6718 || style="text-align: right" | 6878
 +
|}
 +
 +
アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因?
 +
 +
==== 幅優先探索(配列)(ver. 2.0.2) ====
 +
 +
{| class="wikitable"
 +
|-
 +
! 関数 / # !! 1 !! 2 !! 3
 +
|-
 +
! 全体時間
 +
| style="text-align: right" | 1479 || style="text-align: right" | 1379 || style="text-align: right" | 1442
 +
|-
 +
! l154: <code>appendTo()</code>
 +
| style="text-align: right" | 59 || style="text-align: right" | 56 || style="text-align: right" | 57
 +
|-
 +
! l164: <code>newHeading()</code>
 +
| style="text-align: right" | 398 || style="text-align: right" | 411 || style="text-align: right" | 427
 +
|-
 +
! l183: <code>appendHeading()</code>
 +
| style="text-align: right" | 130 || style="text-align: right" | 125 || style="text-align: right" | 124
 +
|-
 +
! l222: <code>headingsBFS()</code>
 +
| style="text-align: right" | 278 || style="text-align: right" | 258 || style="text-align: right" | 258
 +
|-
 +
! l467: <code>convertLineByLine()</code>
 +
| style="text-align: right" | 1178 || style="text-align: right" | 1149 || style="text-align: right" | 1182
 +
|}
 +
 +
同じアルゴリズムだが、従来の<code>investigateHeadings()</code>より若干速いくらいまで速度が上がった。特に<code>appendTo()</code>に要する時間が劇的に短くなった。配列への追加は非常に高速。