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] Tweet ■ファイルサイズを求めるのにfseek()とftell()を使ってはいけなかった件22016年 2月23日(火) 0:00:00 [さくらのブログから転記] |
RSS配信中 | |
先日の「ファイルサイズを求めるのにfseek()とftell()を使ってはいけなかった件」ですが、昨日までで、最近公開した主要ソフトのうち半分は修正を終えました。 あと3本ほど、手を付けられなかったソフトがありますが、
で対応していこうかと考えております。なんとか2月中にカタを付けられたらな、と。 話は変わりまして、改行コード変換ライト(仮称)のβ版ですが、本日公開のバージョンで、「無効なコントロールコードの削除」機能を追加しています(これまではスペースかドットへ置換する機能しかなかった)。 実は置換だけの方が実装がラクでした。 特定のコントロールコードを見つけたら、その部分のコードを書き換えるだけなので。 削除する場合、特定のコントロールコードの部分を削除したら、「詰める」処理を行わなければなりません。 メモリ上の、特定のコントロールコードの部分以降のコードを、全部一つずつズラしていく感じで。 従 来のバージョンだと、あまり速度を気にしなかったので、std::vector で準備された文字配列変数の中で特定のコントロールコードを見つけ次第、その要素を詰める処理をしていたわけですが、それだとコントロールコードを見つけ た数だけメモリ内を大規模に移動させる処理が生じるので、ファイルサイズが大きいと処理効率が悪くなっていました。 今回の場合、メモリ上で詰める処理を行うのではなく、ディスクへライトする際に、特定のコントロールコードの部分だけをライトしないようにしています。 ライトキャッシュの利用効率とか、DMAの活用の観点等で性能が落ちる可能性がありますが、メモリ上で要素詰めの処理が無駄に発生しない分、全体的な処理効率は上がっていることを期待しています。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3212430 (+0127)[+0214] Copyright© 2010-2024 INASOFT |