INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2016-02-14 02:21 / 次へ→ / 最新へ⇒

■「改行コード変換」の失敗。処理基盤の汎用化のしすぎ

2016年 2月14日(日) 2:21:54 [さくらのブログから転記]



RSSRSS配信中
https://www.inasoft.org/



改行コード変換というプログラムを作成しています。今日時点の最新版は、ver.1.22.06です。

lclui_ss.png

元々の作成目的としては、テキストファイル中の改行コードをCR+LFに変更したり、LFに変更したりすることだったのですが、その後の改修でで、全角スペースを半角スペース2つに置換したり、行末のスペースをトリムしたり、タブを適切なスペース個数に置換したり、…など、作者が仕事で必要になったテキストファイルの編集機能をどんどん追加していくことになりました。

ただ、色々機能を追加した結果、動作速度がとてつもなく遅くなってしまったようです。

その影響は、大きなファイルであるほど顕著に表れます。

例えば、160MBのテキストファイルに対して、「右に指定したバイト数毎に改行コードを挟む」指定をした場合、20~30分程度の時間が掛かってしまいます。

原因は、機能が増えすぎたために、様々な機能を共通の基板上で行うようにしてしまったことです。

一度、ディスクからメモリに読み出しを行い、メモリ上で様々な処理を行いますが、挿入処理の場合はメモリの再確保と文字列の挿入処理のために恐ろしいほどに時間が掛かってしまいます。しかも、内部的にUnicodeへの変換処理と、元の文字コードに戻す処理が走っているので、なおさら効率が悪い。

これをもし、共通の基板上での処理のような形にせず、単純にファイルの読み書き処理の中だけで改行コードの挿入処理だけを行う(「指定バイト数のfread→読み込めたバイト数のfwrite→改行コードのfwrite」の繰り返しとする)なら、5秒くらいで終わります。

今のままでは余りにも効率が悪い。

改行コード変換は、ゼロベースで作り直す必要がありそうです。




目次 | ←前へ / 2016-02-14 02:21 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3129605 (+0067)[+0470]

Copyright© 2010-2024 INASOFT