[過去ログ]
C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net (1002レス)
C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net http://echo.5ch.net/test/read.cgi/tech/1467211515/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [sage] 2016/06/29(水) 23:45:15.36 ID:EZjVZgG6 ■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら http://www.visualstudio.com/downloads/ ■コードを貼る場合はこちら http://ideone.com/ ■前スレ C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net http://peace.2ch.net/test/read.cgi/tech/1437808445/ C#, C♯, C#相談室 Part89 http://peace.2ch.net/test/read.cgi/tech/1443271409/ C#, C♯, C#相談室 Part90 http://echo.2ch.net/test/read.cgi/tech/1455160063/ ■次スレは>>970が建てる事。 建てられない場合は他を指定する事。 http://echo.5ch.net/test/read.cgi/tech/1467211515/1
978: 803 [sage] 2017/01/29(日) 12:03:54.50 ID:6CKnMYhm >>818 >>819 >>831 64bitでコンパイルする 2GB内に配列を分割する などいろいろやりましたがメモリオーバーになってしまいどうしても実行できませんでした 結局、元のファイルを分割し、最後に結合する方式にしてやっと通りました 使用メモリ見ると10GB位食ってましたが一応全部実行できています ご協力ありがとうございます http://echo.5ch.net/test/read.cgi/tech/1467211515/978
979: デフォルトの名無しさん [sage] 2017/01/29(日) 12:28:52.14 ID:NqGwYzj0 >>978 配列に入れて何がしたいのか最後まで聞けなかったけど、FileStreamで読み書きじゃ駄目だったの? http://echo.5ch.net/test/read.cgi/tech/1467211515/979
980: デフォルトの名無しさん [sage] 2017/01/29(日) 12:34:03.49 ID:Be2uFNKC 同意見 そんなもん全部メモリに読んだところで どうせシーケンシャルに処理する以外にやれることがあるとは思えない http://echo.5ch.net/test/read.cgi/tech/1467211515/980
981: 803 [sage] 2017/01/29(日) 13:07:42.19 ID:6CKnMYhm >>979 BinaryWriterで挿入操作ができれば使っていたのですが 以下を見るとできないようなので使いませんでした http://dobon.net/vb/bbs/log3-46/27592.html http://echo.5ch.net/test/read.cgi/tech/1467211515/981
982: デフォルトの名無しさん [sage] 2017/01/29(日) 13:12:51.28 ID:WfZCQfEI 一時ファイルに元のファイルの内容と挿入データを書き込む →元のファイルを削除する →作成した一時ファイルの名前を元のファイルの名前に書き換える でできると思うけど自分の好きな方法でうまくいったのならいいんじゃね http://echo.5ch.net/test/read.cgi/tech/1467211515/982
983: 803 [sage] 2017/01/29(日) 13:29:04.76 ID:6CKnMYhm >>982 >一時ファイルに元のファイルの内容と挿入データを書き込む 確かにこのやり方がスマートでした 元のコード流用しようとしたので今のやり方になってしまいました あらかじめわかっていたら・・・ http://echo.5ch.net/test/read.cgi/tech/1467211515/983
984: デフォルトの名無しさん [sage] 2017/01/29(日) 17:25:54.20 ID:UOF0Asn0 うめ http://echo.5ch.net/test/read.cgi/tech/1467211515/984
985: 810 [sage] 2017/01/29(日) 22:35:39.11 ID:F8/CipCU >>810です。反応が遅れてすいません。現在は、 クラスのインスタンスの複数のプロパティの値を比較して等価かどうか判定しているのですが データをリストに追加する際、2種類の等価比較法(IEqualityComparer)を用いています つまり追加対象のデータのうち、 まず弱い比較(少なめのプロパティだけが一致するか比較)で 既存のリストにないデータの「候補」をざっくりピックアップして、 候補たちに少々時間のかかる処理をかけてから(一部プロパティが書き換えられる)、 次に強い比較(多めのプロパティを比較)で候補の中から真に「新しい」ものをリストに追加しています PosgresやLocalDBといったデータベースでは、こういうことって簡単にできるんでしょうか ネット検索してみたところ複数のプロパティを比較すること自体は UNIQUE制約(?)というので出来そうに思ったんですが、 現在やっているような2段構えの比較法は実現可能なんでしょうか? http://echo.5ch.net/test/read.cgi/tech/1467211515/985
986: デフォルトの名無しさん [sage] 2017/01/29(日) 22:51:26.56 ID:M0HgmB1M 二段構えにする必要はない 比較に必要な全てのカラムセットにuniqueインデックス張りなさい http://echo.5ch.net/test/read.cgi/tech/1467211515/986
987: デフォルトの名無しさん [sage] 2017/01/29(日) 22:55:35.08 ID:F8/CipCU >>986 それだと誤判定になりませんか? 追加前のデータと実際に追加するデータでは 一部プロパティ(弱比較ではチェックしないが、強比較ではチェックするプロパティ)の値が異なっているのですが… http://echo.5ch.net/test/read.cgi/tech/1467211515/987
988: デフォルトの名無しさん [sage] 2017/01/29(日) 23:02:20.70 ID:faIlAfcC >>987 強比較の値がDB上に固定できるなら、最初から強比較でやっても十分な速度が出ます 取り出してから変化する性質なら、弱比較でDBから取り出し値を生成してからメモリー上で強比較で良いんじゃないの? http://echo.5ch.net/test/read.cgi/tech/1467211515/988
989: デフォルトの名無しさん [sage] 2017/01/29(日) 23:27:53.21 ID:F8/CipCU >>988 すいません、「DBから取り出す」という表現が何を指しているのかよくわかりません… いま思案しているのはデータの集計作業時ではなく登録作業時の話です 各データについて、一部のプロパティの値を確定させるには処理時間がかなり必要になっています 追加登録したいデータたちについて、このプロパティ値をあらかじめすべて確定するのは非常に時間がかかるので まず弱比較でざっくりと追加可能な候補(プロパティ値を確定しなければならないデータたち)を絞っているのです 今はこんな風にしてます(実際のコードでは日本語変数じゃないです) 候補データリスト = 追加したいデータのリスト.Except(全リスト, new MyClass_WeakComparator()).ToList(); ↓ 候補データリスト について全プロパティ確定作業; //←重い ↓ 全リスト = 全リスト.Union(候補データリスト).ToList(); http://echo.5ch.net/test/read.cgi/tech/1467211515/989
990: デフォルトの名無しさん [sage] 2017/01/29(日) 23:33:19.34 ID:F8/CipCU >989補足 Union()のところで既定の等値比較子として強比較が使われています http://echo.5ch.net/test/read.cgi/tech/1467211515/990
991: デフォルトの名無しさん [sage] 2017/01/29(日) 23:37:15.13 ID:M0HgmB1M >>989 insert into 処理対象テーブル select 追加後の値を得る計算式 from 処理対象テーブル where 追加対象を得る条件式 これでいいんじゃないの? 弱比較とかよくわからん言葉遣いはやめた方がいい混乱するから http://echo.5ch.net/test/read.cgi/tech/1467211515/991
992: デフォルトの名無しさん [sage] 2017/01/29(日) 23:50:32.58 ID:M0HgmB1M なんか違うなこうか insert into 全リスト select 任意の計算式 from 追加データ where not exists ( select * from 全リスト where 簡易な比較条件式) and 完全な比較条件式 インデックスは簡易な比較に使うカラムだけでいいよ http://echo.5ch.net/test/read.cgi/tech/1467211515/992
993: デフォルトの名無しさん [sage] 2017/01/30(月) 00:02:56.22 ID:kb+lR8OL >>992 やはり、条件式を2種類地道に書くしかないんですか…長くてハゲそう >インデックスは簡易な比較に使うカラムだけでいいよ アドバイスありがとうございます http://echo.5ch.net/test/read.cgi/tech/1467211515/993
994: デフォルトの名無しさん [sage] 2017/01/30(月) 00:07:16.67 ID:YrqXkGEW >>989 それだと「弱比較」で一致してしまった物は全部捨ててしまっているがいいのか? >>985の書き方だと、「弱比較」で一致しても「強比較」で一致しない物があり、 それは書き込むと読める。 まあこの辺はそちらがやればいい話だが。 http://echo.5ch.net/test/read.cgi/tech/1467211515/994
995: デフォルトの名無しさん [sage] 2017/01/30(月) 00:14:31.63 ID:GO+RhKVN 数千行のSQLとか当たり前だから!!! そのためのDBMSでしょ!!! http://echo.5ch.net/test/read.cgi/tech/1467211515/995
996: デフォルトの名無しさん [sage] 2017/01/30(月) 00:23:01.74 ID:RAZ09caE 1回のクエリで完結させようとせず 1次候補抽出クエリ → ローカルで1次候補のプロパティ書き換え → 最終候補抽出&インサートのクエリ の3段構えにしてもいいんじゃないかと思うけど http://echo.5ch.net/test/read.cgi/tech/1467211515/996
997: デフォルトの名無しさん [sage] 2017/01/30(月) 00:33:18.83 ID:kb+lR8OL >>994 >「弱比較」で一致してしまった物は全部捨ててしまっているがいいのか? 詳しくは書けませんが、やりたい動作としてはその動作でOKです 985の説明はちょっと正確ではありませんでした >>995 大規模なデータベースを触ろうとするのは初めてだったので…すいません >>996 どっちみち長い比較条件を書かないといけないのは避けられそうにないので その方法でもよさそうですね http://echo.5ch.net/test/read.cgi/tech/1467211515/997
998: デフォルトの名無しさん [sage] 2017/01/30(月) 01:03:13.10 ID:9w4b/GJp >>995 SQLが数千行もあって当たり前なの?異常じゃないの?SQLだよ? http://echo.5ch.net/test/read.cgi/tech/1467211515/998
999: デフォルトの名無しさん [sage] 2017/01/30(月) 02:19:40.86 ID:ty17mMxy SQL Serverは問合せ文と制御文を1つのストアドに混在できるので複雑な工夫が容易で、 腕が良ければ数千行の複雑な処理を書くことによって物凄く高速化できることがある Oracleは混在できないため複雑な処理を書くには手間がかかり、プログラマーがあまり工夫しなくなり、 そのため腕が上がらず、結果としてSQL Serverより遅いシステムが多いらしい 現在のSQL ServerにはOracleと同じスナップショット分離(古い人は「行ロック」って言う)があるが、 2000の頃はなかった(今でもデフォルトでオフになってる)ため、高速な更新処理が必要だったことも腕に関係すると思われる (スナップショット分離があれば、ダラダラ更新しても他ユーザーの閲覧に迷惑かけない) http://echo.5ch.net/test/read.cgi/tech/1467211515/999
1000: デフォルトの名無しさん [sage] 2017/01/30(月) 02:31:32.87 ID:RISpHKLn 次スレ C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net http://echo.2ch.net/test/read.cgi/tech/1485589613/ http://echo.5ch.net/test/read.cgi/tech/1467211515/1000
1001: 1001 [] Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 214日 2時間 46分 18秒 http://echo.5ch.net/test/read.cgi/tech/1467211515/1001
1002: 1002 [] Over 1000 Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ http://premium.2ch.net/ ▼ 浪人ログインはこちら ▼ https://login.2ch.net/login.php http://echo.5ch.net/test/read.cgi/tech/1467211515/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.245s*