利用者:Ochaochaocha3/Hiki2MediaWiki for SRW Wiki

提供: スーパーロボット大戦Wiki
ナビゲーションに移動 検索に移動
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要な Hiki 書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「Hiki書式からMediawiki書式への変換」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。

使い方などについての質問はトークページにてお願いいたします。

URI

コンバータ
http://www.li-sa.jp/ocha3/hiki2mw/srw/
GitHubレポジトリ
https://github.com/ochaochaocha3/hiki2mw-srw

動作環境

Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。

Internet Explorer 7 以下ではレイアウトが乱れるようです。

制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。

機能・特徴

GitHubレポジトリのREADMEをご参照ください。

更新履歴

最新版は ver. 2.2.3 (2013年3月10日更新)です。

詳細は、コンバータ付属の更新履歴ページをご参照ください。

技術的メモ

見出しレベル調整の速度

ランダムなレベルの見出し100,000個の変換に要した時間を、Firebug 1.10.0のプロファイル機能を用いて測定した。表記がない場合、単位はms。

環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。

investigateHeadings()(ver. 2.0.1以前)

関数 / # 1 2 3
全体時間 1495 1495 1485
l153: hasDescendants() 59 59 59
hasDescendants() の回数/回 244471 244567 244606
l156: hasChildren() 26 26 26
l160: newHeading() 167 169 177
l169: investigateHeadings() 198 198 198
l233: adjustHeadingLevel() 79 80 78
l281: convertHeadings() 276 276 274
l494: convertLineByLine() 1231 1226 1236

処理速度は実用的だが、hasDescendants() の呼び出し回数が無駄に多い。

幅優先探索(リスト構造)(ver. 2.0.2試作)

関数 / # 1 2 3
全体時間 7022 7026 7166
l155: appendTo() 5422 5360 5518
l173: newHeading() 445 458 461
l190: appendHeading() 5491 5432 5586
l229: headingsBFS() 436 434 436
l469: convertLineByLine() 6764 6718 6878

アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因?

幅優先探索(配列)(ver. 2.0.2)

関数 / # 1 2 3
全体時間 1479 1379 1442
l154: appendTo() 59 56 57
l164: newHeading() 398 411 427
l183: appendHeading() 130 125 124
l222: headingsBFS() 278 258 258
l467: convertLineByLine() 1178 1149 1182

同じアルゴリズムだが、従来の investigateHeadings() より若干速いくらいまで速度が上がった。特に appendTo() に要する時間が劇的に短くなった。配列への追加は非常に高速。

幅優先探索(配列、関数呼び出しなし)(ver. 2.0.3)

変更点は、headingsBFS() 中にコールバック関数の処理を直接記述し、関数呼び出しをなくしたことのみ。

関数 / # 1 2 3
全体時間 1282 1377 1342
l149: appendTo() 59 58 55
l156: newHeading() 431 465 476
l174: appendHeading() 124 123 120
l195: headingsBFS() 120 125 123
l459: convertLineByLine() 1047 1078 1086

関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。