ブログを作る※無料・簡単アフィリ    ブログトップ | 楽天市場
066603 ランダム
StringBuilderを妄信する人のこと (映画・TV)楽天ブログ 【ケータイで見る】 【ログイン】
ブログ草紙
ホーム 日記 プロフィール オークション 掲示板 ブックマーク お買い物一覧
ブログ草紙

<< 前へ次へ >>一覧コメントを書く

2008年10月22日 XML このブログを購読する

 StringBuilderを妄信する人のこと
[ カテゴリ未分類 ]    

 開発しない人には何のことか分からないネタである。
 StringBuilderというのは文字列を連結する機構のことだ。

 文字列というのは文字が並んだもののことである。
 プログラムではその文字列を更に繋げることが必要となることがある。
 C#なら「+」、VBなら「+」か「&」で連結できる。
 EXCELでもVBAだから知っている人もいることだろう。

 だが、文字列が長くなってくると、これが極端に処理が遅くなる。
 連結の方法が連結される元も連結するものも、全部コピーされるからだ。
 それに対し、StringBuilderは賢く、ムダなコピーが起きない。
 だから速い。
 と、妄信している人がいるのである。

 確かに、ある程度以上の文字列長になると連結が遅いためStringBuilderは有効である。
 しかし、それはかなり長い文字列についてである。
 短い文字列の連結は、通常の連結で十分だし、そのためにStringBuilderを使うのはかえって遅くなる。
 1次キャッシュ(あるいは2次キャッシュ)内で収まる程度なら不要である。

 例えば、CSVファイル1行分毎に連結させるとしよう。
 それを関数化したとして、StringBuilderを関数内で定義して処理すると、単純に連結した場合よりかなり遅くなる。
 StringBuilderの初期化処理が1行毎に入るからだ。

 ならばと、呼び出し側でStringBuilderを定義して関数に引き渡すとしよう。
 それでも落とし穴がある。
 StringBuilderをコピーして呼び出してしまうからだ。
 当然、「ref」をつけて、参照渡しにしなければならない。

 これらは意味のない処理を見ていてつくづく思ったのである。
 それはStringBuilderを使ってSQL文を作っていた。
 実行時には何ら変化がないのに、だ。
 これなら定数として定義した方が速い。
 というかコンパイルのみなので実行時間は0である。
 妄信も甚だしい。

 神や仏なら信じるものは救われるのかもしれないが、StringBuilderを妄信しても救われない。
 というか救いがたい?


最終更新日  2008年10月22日 10時34分16秒
コメント(0) | トラックバック(0) | コメントを書く


■コメント

お名前
タイトル
メッセージ
・メッセージ本文は全角で800文字までです。
・書き込みに際しては楽天ブログ規約の禁止事項や免責事項をご確認ください
・ページの設定によっては、プルダウンで「顔選択」を行っても、アイコンが表示されません。ご了承ください。


<< 前へ次へ >>一覧コメントを書く一番上に戻る


PR

カレンダー

2009年8月
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<一覧へ今月次の月>

キーワードサーチ

▼キーワード検索
楽天ブログ内
このブログ内
ウェブサイト

▼タグ検索(楽天ブログ内)
日記 フォト 動画

カテゴリ

バックナンバー

モバイル

m ケータイに
このブログの
URLを送信!

 

Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2009 Rakuten, Inc. All Rights Reserved.