- PR -

MySQLのデータをCSVにする処理がだんだん遅く。

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-07-01 10:31
Jittaさん方式だと、コードがすっきり書けるんですよね。
じゃんぬさん方式の方が高速に処理できそうです。

って、いつも悩むんですよね。この手の処理を書くとき・・・
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-07-01 13:36
こんにちは。
(たぶん初めて休日に投稿するかと…家から見るの久しぶり)

引用:

R・田中一郎さんの書き込み (2006-07-01 10:31) より:

って、いつも悩むんですよね。この手の処理を書くとき・・・



私がいつもやっている方法ですが。
C# 2.0 で恐縮です。

コード:

List<String> lst = new List<String>();
for(int i=0; i<このあたりはむにゃむにゃ; i++)
{
    lst.Add(oRd_m.GetString(i));
}
sbD.Append("\"" + String.Join("\",\"", lst) + "\"");



こんな感じでどうでしょうか。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-07-01 14:25
引用:

ぽぴ王子さんの書き込み (2006-07-01 13:36) より:

sbD.Append(""" + String.Join("","", lst) + """);


そうなんですよ!
実は、僕もこう書くのが大好きでした。何故なら、一番綺麗に書けるからです。

が、しかぁ〜しっ!

Jittaさん、じゃんぬねっとさんと、わんくまな方2名が使用していません。
これはきっと、速度的に StringBuilder による連結などが速いからだと思ったのです。
確かに、一度配列を定義してメモリに渡したものを再度読み込んで Join としたものを連結する訳ですから、単にメモリにベタベタ追加する StringBuilder には勝てません。

こうなると、わんくまファンの僕(勉強会には出席しませんでしたがw)としては、StringBuilder を使う方法を検討しなければならない訳です。
で、Jittaさん方式でいくか、じゃんぬねっとさん方式で行くべきかをすべきかと思った訳です

引用:

ぽぴ王子さんの書き込み (2006-07-01 13:36) より:

(たぶん初めて休日に投稿するかと…家から見るの久しぶり)


ぽぴ王子さんは、王子なのにお城に住んではいないんですね( ̄□ ̄;)!!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-01 17:35
引用:

ぽぴ王子さんの書き込み (2006-07-01 13:36) より:
コード:

List<String> lst = new List<String>();
for(int i=0; i<このあたりはむにゃむにゃ; i++)
{
    lst.Add(oRd_m.GetString(i));
}
sbD.Append(""" + String.Join("","", lst) + """);




 せっかくだから、AppendFormat を使います。
文字列で + 演算子は、あまり使いたくない。。。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-07-02 11:24
引用:

Jittaさんの書き込み (2006-07-01 17:35) より:

 せっかくだから、AppendFormat を使います。
文字列で + 演算子は、あまり使いたくない。。。


確かにそうですね。
実は AppendFormat メソッドはこのスレ(burton999さんの書き込み)で初めて知りました _| ̄|○
まだまだ勉強が足らんです。

ちなみに 2.0 でない場合のときは

コード:

ArrayList lst = new ArrayList();
(中略)
sbD.AppendFormat("\"{0}\"", String.Join("\",\"", (String[])lst.ToArray(String[])));


確かこんな感じで。
家…ゲフンゲフンお城には環境がないのでチェックしてませんが。

スキルアップ/キャリアアップ(JOB@IT)