| ■84788 / ) |
Re[1]: MidB関数の利用について |
□投稿者/ 魔界の仮面弁士 (1374回)-(2017/08/02(Wed) 15:23:15)
|
■No84781 (シュヴァ さん) に返信 > MidBと同じ動きをする関数を参考にし、利用しました。 本来の MidB は、バイナリ単位でデータを切り出すものですね。 旧VBの String 型は、「UTF-16 ではないバイナリ」も格納できたので、 MidB に文字列を渡せるようになっています。(16bit版 VB の名残りとも言えるかも)
一方、.NET の String は UTF-16 文字列しか格納できないため、 まったく同じものにはなりません。そのため、Encoding クラスを経由して、 文字列をバイナリに置き換えるという作業が必要になるわっています。
たとえば、読み込む元データが「文字列」ではなく、「Shift_JIS なファイル」等であるなら、 Byte 配列のまま読み出しておき、それを渡すようにすれば(あるいは Stream を渡しても良い)、 GetBytes 変換が不要となり、GetString だけで処理できるので、高速化するかも知れません。 (データ内容によっては、むしろ低速化するかもしれませんが)
> 他の処理の時間も計測したところ、変換前と変わらなかったのでこの関数を利用している処理が原因なのは確かなようです。 GetBytes にかかる負荷と GetString にかかる負荷は、それぞれどの程度なのでしょうか?
> 一気に読み込んでまとめて処理ということはせず、一行ずつ処理を行いたいです。 一気に読み込んで、とありますが、strLine にはどのぐらいの量の文字列が渡されるのでしょうか。 また、一行ずつ渡したいなら、文字通り行単位で区切って渡せば良いと思いますが、 行単位で試してみていないのは、何か技術的な問題があるのでしょうか。
|
|