Top > プログラミング > .NET Tips> 文字列処理を高速に行う

文字列処理を高速に行う」への評価、コメント

評価

良い / 悪い = 121 / 5 (「良い」の割合 = 0.960 , 人気度 = 2.016

評価する

コメント一覧


通常のコメント
管理人 2018/07/4 (Wed) 02:12:12
> 先に宣言しておいてインスタンスを使いまわす方が速いんじゃないでしょうか。

その通りですが、ここでは連結演算子との比較が目的ですので、このようになっています。

通常のコメント
pf2010 2018/07/3 (Tue) 17:21:06
> 'StringBuilderで文字列を追加していく
> Dim sw3 As New System.Diagnostics.Stopwatch()
> sw3.Start()
> For i As Integer = 0 To 1000000
> Dim sb As New System.Text.StringBuilder()
> For ai As Integer = 0 To appendCount - 1
> sb.Append(s1)
> Next
> Dim r3 As String = sb.ToString()
> Next
> sw3.Stop()

このまま実行すると、内部的にはStringBuilderのインスタンスが1000000回作成されるので

'StringBuilderで文字列を追加していく
Dim sw3 As New System.Diagnostics.Stopwatch()
Dim sb As New System.Text.StringBuilder()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sw3.Start()
For i As Integer = 0 To 1000000
sb.Clear()
~~~~~~~~~~
For ai As Integer = 0 To appendCount - 1
sb.Append(s1)
Next
Dim r3 As String = sb.ToString()
Next
sw3.Stop()

みたいに先に宣言しておいてインスタンスを使いまわす方が速いんじゃないでしょうか。

それとも、インスタンスの生成ってそんなに負荷がかからないんですかね?

評価の理由
タドコロ 2018/05/29 (Tue) 14:47:45
評価:悪い
いいねぇ!

通常のコメント
匿名 2017/01/26 (Thu) 01:39:49
Char型は使い勝手考えると実際の利用場面では結局String型に変換せざるをえないのですよね…

通常のコメント
匿名 2017/01/20 (Fri) 08:09:40
char配列を使う方が速い

通常のコメント
管理人 2016/05/3 (Tue) 01:13:50
>>実際に私が試した限りでは、4つの文字を連結する場合は、悪いとされている方法のほうが若干速くなりました。
>
>悪いとされる場合が悪くないケースですね
>この場合、実質的にCONSTな文字列5つをCONSTで作り出すだけとすると、そちらの方が早くなります(コード最適化をするなら)

これは、CONSTかどうかにかかわらずです。詳しくは、「文字列を連結する」をご覧ください。

通常のコメント
匿名 2015/08/12 (Wed) 16:26:18
>実際に私が試した限りでは、4つの文字を連結する場合は、
>悪いとされている方法のほうが若干速くなりました。
悪いとされる場合が悪くないケースですね


この場合、実質的にCONSTな文字列5つをCONSTで作り出すだけとすると、そちらの方が早くなります(コード最適化をするなら)

StringBuilderを使うなら、純粋に変動する値を使うほうが効果を見て取れます(i.ToString()等)

評価の理由
にいの 2015/07/22 (Wed) 18:00:17
評価:悪い
勉強になりました。

通常のコメント
匿名 2013/12/4 (Wed) 11:58:26
sql = "select"; sql &= " * "; sql &= " from hoge"...  前時代的なソースはまだ現場で発掘されます。。

評価の理由
匿名 2012/03/14 (Wed) 21:49:59
評価:良い
勉強になった

評価の理由
匿名 2011/09/12 (Mon) 13:52:04
評価:良い
勉強になりました。

通常のコメント
俺です 2011/02/8 (Tue) 10:28:32
確かに早いですが、目に見えて効果がある局面は、
限られているのではないでしょうか?
普通に文字列を連結する場合に比べ、
ソースが醜くなってしまうので、無条件に使う
べきではないと思います。

評価の理由
まけろう 2010/12/8 (Wed) 15:57:29
評価:良い
勉強になります。

評価の理由
匿名 2010/03/16 (Tue) 22:40:18
評価:良い
知りたい内容が簡潔に書かれていたので為になった。

評価の理由
seg 2010/01/7 (Thu) 17:26:24
評価:良い
すんげぇ!

評価の理由
すばらしい! 2009/08/18 (Tue) 10:24:34
評価:良い
劇的に違いますね。
さっそく使わせていただきます。

通常のコメント
匿名 2009/04/8 (Wed) 22:44:26
ありえない!何この速さ。
↓のようなプログラムを作っちゃだめですね。
Dim i As Integer = 0
While i < 10000
TextBox1.Text = TextBox1.Text & "あいうえお"
i = i + 1
End While

評価の理由
はちみつ 2008/12/17 (Wed) 15:18:29
評価:良い
はやくてビックリしました~

評価の理由
渋谷 2008/11/18 (Tue) 11:51:15
評価:良い
VB6には無かったんですよね、こういうの。
パフォーマンスが良いのはもちろん、JavaのStringbufferやDelphiのTStringListのような使い方ができて、便利。
さらに、AppendLineだと改行コードもついて、クエリーを連結する時などに便利です。

通常のコメント
ぱっちぃさん 2008/01/22 (Tue) 16:04:55
これはこれは

通常のコメント
yosshi 2008/01/14 (Mon) 21:10:22
VB.NETは早いと周りに示したい!
高速化のノウハウを多く取り上げてください。
よろしくお願いします。

評価の理由
T.K 2007/06/29 (Fri) 10:44:10
評価:良い
役立ちました。ありがとうございます

評価の理由
sherpa 2005/01/5 (Wed) 14:12:21
評価:良い
文字列操作ではなくミリ秒単位の出力方法を探していました(^^ゞ

評価の理由
匿名 2004/06/21 (Mon) 17:39:03
評価:良い
探してたものにドンピシャでした!

評価の理由
Yamane-D 2004/06/16 (Wed) 11:22:07
評価:良い
String型の内部的な扱いについて混乱気味だったのがすっきりしました。

評価の理由
2003/11/20 (Thu) 00:26:14
評価:良い
有難う御座いました。
VB初心者です。初心者向けの書籍には記載が無く、VBヘルプでは内容が高度でチンプンカンプンです。
その点例題が記載されているので参考にしてアレンジできました。約5分の処理時間が1秒以下と短縮できました。

評価の理由
isi 2003/09/17 (Wed) 14:00:34
評価:良い
JavaでいうStringとStringbufferの関係でしょうか。

コメントの投稿

[説明]