C#, C♯, C#相談室 Part91at TECH
C#, C♯, C#相談室 Part91 - 暇つぶし2ch818:デフォルトの名無しさん
17/01/23 00:06:09.00 dQYVkXPH.net
>>803
URLリンク(stackoverflow.com)
URLリンク(msdn.microsoft.com)
URLリンク(abe-masato.cocolog-nifty.com)
C# 2GB でググレカス

819:デフォルトの名無しさん
17/01/23 00:14:05.50 iJ5kh901.net
2GBってネタじゃなくて真面目に言ってるのかw
少なくとも現時点では富豪的過ぎる気がするんだけどw
ムーアの法則とっくに終わってるし将来的にも疑問だなあw

まあ現時点でも動作環境を限定できるならそれほど非現実な数字でもないんだろうけど

820:デフォルトの名無しさん
17/01/23 00:41:33.95 ft2qOqRV.net
803じゃないけど、

10~20個くらいのプロパティを持つクラス(ほとんどstring型)の、数百万個単位のインスタンスを処理したい
(現在百数十万個だがデータは日々増えていて、将来的には500万個以上のデータを扱いたい)
データ追加時を除けば1つのデータのプロパティを書き換えることはあまりない
全データを対象に集計や抽出をバリバリやる

今はこのクラスのジェネリックリストでメモリ上に保持していて、XmlSerializerとStreamReader/Writerでロード/セーブしてるけど、
500MB以上のファイル読み書きに十秒単位で時間が掛かるようになってきてしまい、使用メモリも多いときは1GBに届きそうになってきた

個人のPCでも実現出来る範囲で何か工夫して軽量化するとすれば、どういうやり方があるだろうか
データベースを使うと却って重くなる?

821:デフォルトの名無しさん
17/01/23 01:00:04.12 AKblCqbZ.net
DB使え

822:デフォルトの名無しさん
17/01/23 01:17:39.68 ft2qOqRV.net
やはりデータベースか…
この規模のデータでデータベースを使うなら何がいいですかね?

823:デフォルトの名無しさん
17/01/23 05:19:54.65 3LnhEFNW.net
>>810
むしろそんなになるまでデータベースを使わない選択をしてたのが信じられんわ

824:デフォルトの名無しさん
17/01/23 07:25:59.67 4eKNVnEB.net
>>812
postgresかな
高性能で、ライセンスが緩く、比較的ローカルでも利用されることの多い非常に有名なDBMSだ
広く配布するようなものではなさそうに見えるから、
SQLiteみたいな組込型に拘る必要はないと思う

825:デフォルトの名無しさん
17/01/23 08:36:41.41 mc6Hyr1K.net
>>812
SQL-SERVER LocaDB でいいんじゃね?
Visual Studio から操作できるし
他の端末からも参照したいって言われたら SQL-SERVER Express に移行すればいいし
もっとでかくなったら Standard や DataCenter Edition あるし

826:803
17/01/23 11:57:28.95 Enhoy4E3.net
>>804
>>805
>>807
>>808
レスありがとうございます
<gcAllowVeryLargeObjects> を有効にしてもbyte配列自体が2GB超えて作ることができないため
それそも不可能ということでよろしいですか?
その場合、int32などに配列作りなおしたいと思います

827:デフォルトの名無しさん
17/01/23 12:04:12.14 uKeJP+/b.net
byte[]としては無理
byte*にするなら可能

828:デフォルトの名無しさん
17/01/23 13:01:08.68 GKpZ78C8.net
>>816
バイナリファイルの編集が目的ならreader/writer使えば良いんじゃないの

829:デフォルトの名無しさん
17/01/23 21:01:33.61 bI3M8V88.net
>>816
ビルドターゲットはx64になってる?
AnyCPUだと最近のは32bitを優先がデフォルト設定だから上手く行かないかも。こっちを直しても良いけど。
いずれにせよ、64bit環境は必須。

830:デフォルトの名無しさん
17/01/23 21:16:01.30 4O+fDoKV.net
>>815
SQL Server Expressは10GB制限があるから話にならんよ
DBまでわざわざMSにロックインとかアホらしいし

831:デフォルトの名無しさん
17/01/23 21:55:33.04 3LnhEFNW.net
>>820
じゃあ何がおすすめなの?教えて先生!

832:デフォルトの名無しさん
17/01/23 21:58:50.93 hTicmAdc.net
postgreオヌヌメ

833:デフォルトの名無しさん
17/01/23 21:59:47.37 LuyUsAN1.net
>>820
10GBも有れば十分だと思う

834:デフォルトの名無しさん
17/01/23 22:29:35.23 4O+fDoKV.net
>>823
既に500MBあってまだまだ増えるって言ってるのに何を根拠に十分だというのか
いくつも一時テーブル作ったりしたらカツカツだろ
DBってそれぞれに結構癖屋独特のノウハウがあるから、後で問題が出てから乗り換えるより最初から一本に決めたほうがいい
MSに金払う気がないならpostgresにしとけ

835:デフォルトの名無しさん
17/01/23 22:53:34.66 uKeJP+/b.net
>>824
>(現在百数十万個だがデータは日々増えていて、将来的には500万個以上のデータを扱いたい)
> XmlSerializerとStreamReader/Writerでロード/セーブしてるけど、
> 500MB以上のファイル読み書きに十秒単位で時間が掛かる

今のデータで考えると10GBには百数十万個の20倍
今のデータはxml
どんな根拠で10GBが不十分だというのか逆に聞きたい

836:デフォルトの名無しさん
17/01/23 22:59:20.56 UsEI+ALW.net
>>824
理由もなしにpostgresとな

837:デフォルトの名無しさん
17/01/23 23:08:01.01 wWnQplUy.net
話は変わるけど、LocalDBをOS標準にしてくれると嬉しいんだけどな

838:デフォルトの名無しさん
17/01/23 23:15:06.54 wcSM/s0i.net
いまだにPOCOの概念がよくわからないんだけど、POCOと対になるものと併せて誰か教えてクレメンス

839:デフォルトの名無しさん
17/01/23 23:19:31.21 4eKNVnEB.net
>>828
わかりやすいのは型付データセットだな
強制された基底クラスや大量の自動生成コードにクソミソに汚されたクラスのことだ

840:デフォルトの名無しさん
17/01/23 23:25:33.94 8CargB7Y.net
DBはころころ変わり続けるのはもうやめてほしいな

841:デフォルトの名無しさん
17/01/24 01:13:39.09 JiOoKhp+.net
>>816
GetValueなら64bitを指定できはする
64bitなら一応確保できるのかなぁ

だけど、そもそも2GB超の連続領域を安定して確保できるかは不安
メモリマップとかも検討したら?

842:デフォルトの名無しさん
17/01/24 08:39:50.24 HHZbO6eg.net
>>820
> SQL Server Expressは10GB制限があるから話にならんよ
生の XML を格納する訳じゃないだろうしデータ圧縮もできるし話にならないのは君のちんけな知識じゃないかな? w
PostgreSQL もいいと思うけどちょっとしたデータの確認とかを Visual Studio でできる SQL-Server の便利さは捨てがたい

843:デフォルトの名無しさん
17/01/24 08:42:05.80 JKcqAdCJ.net
その程度の便利さならどうでもいいな
GUIの管理ツールを使えば済む話

844:デフォルトの名無しさん
17/01/24 08:42:56.64 HHZbO6eg.net
>>827
内部的には SQL-Server のプロセス動いてるから大多数の人には邪魔にしかならんと思う

845:デフォルトの名無しさん
17/01/24 08:46:39.86 ghFC1Ntr.net
sqlserverってselectでもデッドロックするからヤダ

846:デフォルトの名無しさん
17/01/24 10:25:32.84 tgh5wy6g.net
>>834
Vistaか7あたりから、ファイルシステムがSQL Serverベースになるという話があったよな

847:デフォルトの名無しさん
17/01/24 10:52:48.75 g9KGWoah.net
>>835
ちょっとはググれよ

848:デフォルトの名無しさん
17/01/24 11:02:46.65 tjYeiy24.net
OSにDBもたせるとかまたセキュリティホールの温床やん

無駄な機能は悪

849:デフォルトの名無しさん
17/01/24 11:05:54.15 4uwrNeCv.net
DB=セキュリティホールときたかw

850:デフォルトの名無しさん
17/01/24 11:23:21.18 1ohBhH6C.net
痴性溢れる御意見ですね

851:デフォルトの名無しさん
17/01/24 11:25:32.73 b/7/gkXo.net
たしかにレジストリも一種のDBでセキュリティホールの温床だから
OSで各種設定を保持するのはやめよう(名案)

852:デフォルトの名無しさん
17/01/24 11:28:18.15 nhx4+y/y.net
>>836
頓挫しちゃったのが勿体無い

853:デフォルトの名無しさん
17/01/24 11:47:35.47 HE6oytLN.net
ゲイツ3世さんがずいぶん入れ込んでたみたいだったけど、正直俺にはアレのメリットが
さっぱり理解できんかった。

854:デフォルトの名無しさん
17/01/24 12:20:30.56 b/7/gkXo.net
ツリー式のファイル管理はもう人が把握できる限界に近づいてると思うし
もっとリッチなタグ情報をファイルシステムで持たせて
OSの検索機能に統合する思想は支持するよ

855:デフォルトの名無しさん
17/01/24 12:43:39.44 HHZbO6eg.net
>>833
> GUIの管理ツールを使えば済む話
それをいちいちインストールするのが面倒だって話

856:デフォルトの名無しさん
17/01/24 12:47:25.25 HHZbO6eg.net
>>836
WinFS か
いい考え方だと思うがちょっと構想が壮大すぎたな

857:デフォルトの名無しさん
17/01/24 13:11:04.23 VXWwcrkC.net
ゲイツは過去にXMLは使い物にならないと言った。

WinFS、WPF・・・ゲイツはやはり生粋のプログラマである。

858:デフォルトの名無しさん
17/01/24 15:21:09.38 iRQG5obN.net
WPFでXAMLにGoサインだしておいてよく言う

859:デフォルトの名無しさん
17/01/24 15:39:07.83 VXWwcrkC.net
ゲイツはVista以降はタッチしていない。

860:デフォルトの名無しさん
17/01/25 03:10:02.58 WHRwTArY.net
>>847
全部読まないと一部分が取り出せないってのがデータが多くなると致命的だよね

861:デフォルトの名無しさん
17/01/25 07:15:37.99 fntd/u0o.net
そこまででかいならDB使えってことでしょ

862:デフォルトの名無しさん
17/01/25 11:50:15.36 3NBpStvW.net
JAVAやVB6、WPF、LINQが遅くないと暴れてるアホと同じ臭いがする。
機械語NativeとそうでないPGとに根本的な認識の断絶がある。

863:デフォルトの名無しさん
17/01/25 11:53:43.34 2idQLFdG.net
悪いけど暴れてるのは君の方だと思うw

864:デフォルトの名無しさん
17/01/25 11:59:10.65 uJriqNlz.net
同感w

865:デフォルトの名無しさん
17/01/25 12:27:26.41 eMOc+Lms.net
もう一票
時代について行けてないお爺ちゃん頑張って

866:デフォルトの名無しさん
17/01/25 12:38:38.29 obtTERoQ.net
そもそもVB6は割りと早かっただろうに
C#に移行するときにモッサリ感でイライラした人も多かったはずだが

867:デフォルトの名無しさん
17/01/25 14:12:06.66 LppA2Fcl.net
C#も実行時は機械語だし、VB6なんて完全に機械語だろ

868:デフォルトの名無しさん
17/01/25 14:18:51.33 7AoQtGUX.net
>>855
+1
>>854
+1
>>853
+1
>>852
-1

869:デフォルトの名無しさん
17/01/25 16:32:03.08 ABI1PFb6.net
ラムダガイジ、LINQガイジ、staticおじさん、VBガイジは巣に帰れ

870:デフォルトの名無しさん
17/01/25 19:30:14.67 /wdbuGDr.net
俺も>>853にもう一票。
ただそれ以前に暴れている奴がいないと思うが。

あとC#はnativeでは無くMSILだろ。そして必要十分な速度は出ていると思うよ。
DBについては、自前でDBモドキを作る位なら最初からDB使えって話だろ。
ただしOSは今のNTFS+検索用インデックス(現行システム)でいいと思うけどね。
大半は階層化で問題ないし、必要あればDBを動作させればいいだけ。
WPFは使ったこと無いが、中途半端なものを作るのではなく、
最初からHTMLにしとけばよかったと思う。

871:デフォルトの名無しさん
17/01/25 19:33:54.26 G7Mt73tJ.net
>>860
C#は実行時はネイティブだよ
Javaみたいなインタプリタとのハイブリッドとも違い、ほぼAOTな方式

872:デフォルトの名無しさん
17/01/25 19:34:38.55 uJriqNlz.net
>>857が言ってるのはCPUに命令渡されるときは機械語だってような意味でしょw

873:デフォルトの名無しさん
17/01/25 20:00:27.57 /wdbuGDr.net
>>861
JITと言えよ。話が余計におかしくなるだろ。
とはいえMonoは直接native吐けるようだが。

874:デフォルトの名無しさん
17/01/25 20:06:49.55 a2fwv9ft.net
>>863
.NETは起動時にコンパイルだから、JavaのHotSpotみたいなのが真のJITだとするなら実質的にはAOT寄りでしょ
あくまでコンパイルするタイミングの問題でしかないので、ngenや.NET Nativeみたいなのも技術的に難しくない
Cのソースを実行前にコンパイルしてるようなもんだ

875:デフォルトの名無しさん
17/01/25 21:03:29.96 /wdbuGDr.net
>>864
所詮は言葉の定義だから争う意味はないんだが、
普通は「直接実行出来ない形式」(=MSIL)で配布され、
それを実行時(=CLR)に機械語に変換して実行するのなら、それはJITと言う。

MonoのAOTは見た目EXビットの対策用で、結果的にnativeが入手出来るが、それはJITより効率が悪い。
例えばJavaScript(V8)の場合は実行時にまず手抜きJITを行い、実行する。
そして何度も実行される部分だけ、最適化JITを行う。
最適化JITを最初から全面的に行わないのは、最適化にも時間がかかるから。
つまり、「JITコンパイル時間+実行時間」が最小になるように最適化している。
もちろん最適化JIT済みのnativeを吐くのも簡単なはずだが、必要ないから見たことはない。
Javaは知らんがHotJavaも同じようなコンセプトだったので、多分同じ。

結局、MonoのAOTは「常に最適化JIT」を全面的に行う分だけ効率が悪い。
ただしAOT済みのexeを配布/使用する場合はJIT時間分だけ効率がよくなる。
MonoはLinux等もターゲットにしているのでAOTが必要だが、
動的コードを実行出来る環境(windows)では必要なかった。
ここで.NET Nativeが出てきたところをも見ると、MSもJIT時間が気になっていたということではある。

.NET NativeならAOTと言っていい。
ただの.NET(MSIL)なら、やっぱりJITだよ。それは実行時(ダブルクリック以降)にコンパイルしている。
最初から全面最適化JITするという、頭の悪いJITを積んでいるだけでしかない。
ではC#は?というのはこの意味では質問が悪いが、
今のC#はMSILが主流だと思うが、
所詮大半はwindows/x86(x64)でしかないのでexeでも問題ないし、今後は変わるのかもね。

ちなみに.NET Nativeにしたら、難読化はかなり進むのかな?

876:デフォルトの名無しさん
17/01/26 02:07:47.45 NrOKhjjD.net
>>865
技術が進歩したり、複合技を使うようになったから言及することにあんまり意味はないんだけどね

MSILで配布してインストーラでngenをかけるソフトとか、AndroidのArtの事前コンパイルを見ればAOTというのも間違いではない

877:デフォルトの名無しさん
17/01/26 07:09:13.07 hf6GrTPo.net
今度は完全に論破しないと気がすまない奴が集まりだしたなぁ

878:デフォルトの名無しさん
17/01/26 09:22:35.13 +HXQGO57.net
c#で出来たms製の製品って何がありますか?

879:デフォルトの名無しさん
17/01/26 09:47:45.25 e+Zq8z+D.net
>>868
Visual Studio

880:デフォルトの名無しさん
17/01/26 10:33:30.90 MZPXqvXg.net
>>869
devenv.exe
cl.exe
ml.exe
nmake.exe
link.exe
こういうの全部ネイティブなんだが、C#で作ってネイティブ化してるのか?w

881:デフォルトの名無しさん
17/01/26 11:30:14.20 Bx3m0kqD.net
>>870
例えばdevenv.exeとかファイルサイズが1MBすら無いけどそれだけでVS動いてんの?

882:デフォルトの名無しさん
17/01/26 12:08:47.81 sD2fcvWW.net
>>871
何馬鹿なこと言ってるんだ?
今俺が起動してるVSだとntdll.dlljから数えて426モジュールロードされてるが、その中にはC#で作られてるのもあるよ
VSはVSで作られてるかもしれんが、VSはC#で作られてるとは言わないだろ

883:デフォルトの名無しさん
17/01/26 12:13:43.88 ecr0NxNG.net
馬鹿はおめーだよ死ねガイジ

884:デフォルトの名無しさん
17/01/26 12:23:03.13 A9+CgNOi.net
どうでもいいですよ

885:デフォルトの名無しさん
17/01/26 14:11:50.02 +5gKaLQm.net
>>872
>その中にはC#で作られてるのもあるよ
どのくらいの割合で?

886:デフォルトの名無しさん
17/01/26 14:51:13.51 sD2fcvWW.net
>>875
このスレにいるならVSぐらい入れてるだろ。興味あるなら自分で数えろよ

887:デフォルトの名無しさん
17/01/26 15:46:52.91 NrOKhjjD.net
VSはWPF製

888:デフォルトの名無しさん
17/01/26 15:54:26.65 mfu+uciH.net
ガワがWPFでネイティブツール群を呼び出しているならC#製と言っていいね

889:デフォルトの名無しさん
17/01/26 16:25:36.23 eYmqMcR3.net
VS2010からWPFになって激重。

890:デフォルトの名無しさん
17/01/26 17:41:07.76 Ofw1Wwb+.net
SSD君登場

891:デフォルトの名無しさん
17/01/26 18:25:52.64 BIlB42US.net
"PrismUnityApplication" は名前空間 "using:Prism.Unity.Windows" に存在しません。

とエラー一覧に出るようになって

<prism:PrismUnityApplication

に波線が付くようになったんだけどどうすれば直りますか?
プログラムは何の問題もなく動きます。

892:デフォルトの名無しさん
17/01/26 18:38:59.08 RbsnIhge.net
>>879
逆でしょ
偶にVS2010使うと糞重くてイライラするぐらいなのに

893:デフォルトの名無しさん
17/01/26 20:12:45.99 FrBndq/i.net
質問すみません
今MVCでEntityFrameworkの勉強中なんですけど、DisplayNameの属性で日本語指定すると文字化けするんですが何が原因と思われるでしょうか

894:デフォルトの名無しさん
17/01/26 20:39:43.56 kmw2XayL.net
>>883
えーっと俺も経験あるような�


895:Cがするんだが思い出せない。 どうにかしたら直ったと思う。



896:デフォルトの名無しさん
17/01/26 20:50:44.48 Ofw1Wwb+.net
>>881
気にしない
xamlのコンパイラ統合は未だみたいだね

897:デフォルトの名無しさん
17/01/26 21:45:58.05 3P/eAUHh.net
>>884
ありがとうございます
そうですか。このあいだまでは確か普通に出来てたんですよね。。
プロジェクト変えたりweb.configでencoding書いてみてもダメでどうしたものかと

898:デフォルトの名無しさん
17/01/26 21:47:05.34 He8RO7U3.net
>>866
何で君がAOTということにしたいのかよく分からんが、
俺は誤解の少ない言葉を使えと言っているだけ。
主流派がMSILならJITと言うべき。
主流派が君の言うようにnativeならAOTと言うべき。それだけ。
君がAOTだと言い張るのは自由だが、周りから見たら面倒な奴でしかない。

ただAOTは時間予算が潤沢であるところが本質的に異なる。
> しかし,AOT方式をいざ導入してみると,サイズの大きなアプリのインストールや,
> 一度に複数のアプリをアップデートするような場合にコンパイルに時間がかかり,
> 場合によっては20分程度かかるケースが存在していたようです。
> このインストール時間を問題と捉えて,
> Android NのARTでは,JIT方式をもう一度使うことになりました。
> これまでのAOT方式を止めてしまったというワケではなく,実行のタイミングが変わり,
> 端末がアイドル中かつ充電されている場合のみに変更されることになりました。
> URLリンク(gihyo.jp)
だから単純に持ってきた場合にはこういう事が起きる。
ちなみにngenも同様の仕組みは持っている。
> URLリンク(msdn.microsoft.com)(v=vs.110).aspx

最近思うのは○○言語スゲーという信者が多いこと。
C#はそういう馬鹿は比較的少ない感じだが、君がそうなら、それは止めた方がいい。
C#は開発速度を最適化した言語で、結果的に実行効率はC/C++より悪いし、よくなることはない。
これを踏まえた上で、そのアプリにとって最適な言語を選択すればいいだけのこと。

899:デフォルトの名無しさん
17/01/26 21:48:44.28 6c1mJ3TJ.net
>>875
デバッガのホストのように、目的の性質上ネイティブでなければならない一部のものを除けばほぼ全て
VS2010のときに全面的にC#で作り直したらしいよ
VSはC#で書かれたマネージドアプリだと公言してるし

900:デフォルトの名無しさん
17/01/26 21:57:18.89 6c1mJ3TJ.net
>>887
誤解の少ない言葉を使えと言いながら実行速度の話とJITをごっちゃにして不要な混乱を招くのはいかがなものか
原理的にはJITの方が実行時のプロファイルをヒントとして最適化ができる分だけ有利だ
あとは起動時間や実行時にコードを差し替えるコストとのトレードオフだが、
サーバーならそこは全く問題にならないので実際JavaのHotSpotなんか(あくまでサーバー用としてはだが)すごく高性能だよ
重い処理やらせると段階的に最適化されて速くなっていくのが目に見えて、最終的には素直に書いたC++を超えるケースもある

901:デフォルトの名無しさん
17/01/26 22:14:43.93 kmw2XayL.net
>>883
ファイルのエンコードデングが関係してないか?

902:デフォルトの名無しさん
17/01/26 22:15:11.50 BIlB42US.net
>>885
Blendで試したらエラーもなく、デザイナーも表示されたのでこれでしのぐことにします。

903:デフォルトの名無しさん
17/01/26 22:19:59.87 vDjllkLc.net
>>881
可也期待薄だが、俺の環境のxamlのトラブルは
URLリンク(social.msdn.microsoft.com)
の一番最後の方の解決法で何とかなった

こっちはblend関係だから望み薄だが、やっても害が出るものじゃないしよろしければどうぞ

904:デフォルトの名無しさん
17/01/26 22:28:27.88 uLxLwJKu.net
>>888
> VSはC#で書かれたマネージドアプリだと公言してるし
ソースある?

905:デフォルトの名無しさん
17/01/26 22:34:12.57 He8RO7U3.net
>>889
つか、全体として何が言いたいのか分からない。

C#についてなら、俺は主流はMSILだと思っているから、JITと言う方が適切だと言っている。
俺の認識が間違いで、主流は既にnativeであれば、AOTという方が適切だ。
君がそう思っているのならそれでいい。

C#の方がC/C++よりも高速であれば、高速アプリは全てC#で開発されることになる。
実際は、高速アプリは全てC/C++で組まれてるだろ。これが現実。
速度差は仕様差から来ているから、今後ともこれは埋まらない。

> 最終的には素直に書いたC++を超えるケースもある
JA馬鹿も同じ事を言うのだが、探して見つけて喜んでいる時点でゴミ。
アプリの性質を考えて、適切な言語を選択すればいいだけ。
ただ現実的にGUIも含めて全部C/C++で組むのもだるいので、
NumPyが流行るのも分かるし、実際あのアプローチがいいと思うが。

いずれにしても、C#信者ならそれは止めておけ。
それぞれ得手不得手はある。それは当たり前の話。
万能言語があったらこんなに乱立しない。

906:デフォルトの名無しさん
17/01/26 22:54:19.21 7sPtmcfc.net
長文ウゼエ

907:デフォルトの名無しさん
17/01/26 22:57:35.93 SLW9Whol.net
速度はC++の方が早いよ
でも普通のアプリならそこまで問題にならない程度の差

908:デフォルトの名無しさん
17/01/26 23:03:14.05 C8HlRM2h.net
なんか昨日から長文野郎が常駐してて空気が悪くなってる

909:デフォルトの名無しさん
17/01/26 23:03:30.86 GQnwZs38.net
>>890
ありがとうございます
確認してみます!

910:デフォルトの名無しさん
17/01/26 23:30:49.26 NrOKhjjD.net
>>894
自分で争う意味はないって言ったのになんでそんなに定義にこだわるんだ?
俺を含めて、一般的にはJITと呼ぶ(個々を見るとAOT的な側面や使い方もあるね)って言ってるだけだぞ

911:デフォルトの名無しさん
17/01/26 23:50:28.00 NrOKhjjD.net
>>894
あと、>>889はJavaやC#がC++よりはやいとか優れてるなんていってないじゃん
Javaも悪くはない言語選択だよっていってるのに

お前は何か、みんなが前提として理解してることを延々と説明してる感じ

912:デフォルトの名無しさん
17/01/27 00:00:30.43 sOrVpnzk.net
高速アプリが全てC++で組まれてるというのも思い込みもいいとこだな
AmazonがC++でやっててクソ遅かった大規模データ処理が
Java+Hadoopに乗り換えることで大幅に改善されたという例もある
今時言語の速度なんてあくまで要素の一つに過ぎないんだよ

913:デフォルトの名無しさん
17/01/27 00:06:54.41 FPm896mM.net
>>901
こういう馬鹿のデスマーチの尻拭いを何度したことか。氏ね。

914:デフォルトの名無しさん
17/01/27 00:07:53.10 fDORPAeX.net
別に長文でもスレ違いでも参考になるようなレスなら何とも思わないけど
今のこれは実にくだらないねw

915:デフォルトの名無しさん
17/01/27 00:11:06.35 a4ei9zsf.net
ガチのHPCだとコアはCUDAだったりFortranも現役だったりで、これまたC++とは限らない
あまりにも見識が狭すぎる

916:デフォルトの名無しさん
17/01/27 00:24:44.98 QXZBJ6J+.net
長文はキチガイ

917:デフォルトの名無しさん
17/01/27 00:29:28.64 CH0FWDPd.net
>>899
おいおいすりかえんなよ。
俺はC#はJITと言う方が近いと言っている。
君はC#はAOTだと言い張っている。

俺は君が「C#はAOTだ」と言い張る理由が分からない。
C#に問題があるとしたらまずは速度だ。AOTと言い張る理由にもなる。
だからそれに言及しただけ。
では何故AOTだと言い張るのか理由をを言ってみてくれ。

俺はCUDAも使ったことあるよ。
ただそれをここで言う意味もないだろ。

918:デフォルトの名無しさん
17/01/27 00:30:54.80 iNBXS39I.net
申し訳ないが3行以上はNG

919:デフォルトの名無しさん
17/01/27 00:31:00.69 g7nuPYvQ.net
>>906
.NET Native知らないの?

920:デフォルトの名無しさん
17/01/27 00:54:42.49 9J0c8boi.net
本日のNGID:CH0FWDPd

921:デフォルトの名無しさん
17/01/27 01:49:06.49 z/+I8zAR.net
>>906
「JITのほうが近い、ただしAOT的な側面もある」をどうやったら「C#はAOTだ」に変換できるんだ?

多分、お前は「AOT=配布時に機械語、JITとは真逆の概念」みたいな定義にこだわりがあるから話が合わない
みんなは「AOT的=実行する瞬間以外の機械語へのコンパイル」程度の認識だから、ネイティブキャッシュとかArtの事前コンパイルもAOT的と捉えてるだけだ

ただ、.NET Nativeはまだしも、iOS向けUnityとXamarinがそれなりに使われてるので「C#はJIT」は誤解を招く気もするけどね

922:デフォルトの名無しさん
17/01/27 02:14:06.13 fDORPAeX.net
実にどうでもいいんだけど、そういうアーキテクチャー的な話をするんなら、
言語としてのC#と、そのWindows版.NET Framework用の実装は
一応理念的には別門だって前提で議論しないとまずいんじゃないのそもそもw

923:デフォルトの名無しさん
17/01/27 02:19:16.89 fDORPAeX.net
しかしあれだね「、.NETの言語はJITだから実行環境に合わせた最適化がされるようになる」
っていううたい文句は最初の.NET1.0のころからあるけど、
これ今はちゃんと実現されてるんだっけ?

924:デフォルトの名無しさん
17/01/27 03:21:05.61 z/+I8zAR.net
>>912
SSE命令関連とかは結構頑張ってるみたいだね
一応.NET NativeでAOTするのと比べて優位を保てる程度には最適化してるらしい
URLリンク(blogs.microsoft.co.il)
ちょっと古いから今はどちらも改善されてるかもしれんが

925:デフォルトの名無しさん
17/01/27 23:51:25.19 CH0FWDPd.net
>>910
俺が問題にしているのは>>861
> ほぼAOTな方式
についてだぞ。全然そんなこと無いだろ、という話をしている。
ただまあ、お前らが過剰に反応するのはお前ら自身も理解出来ているからだと思うが、
誤解のない表現で言い切ってしまうと以下だ。

・C#は遅い
・C#は20年後には無くなる言語

速度面については、native化や最適化でいいところまでは行くだろうが、
仕様上、保護無し、ランタイム無しで突っ走るC/C++には勝てない。
JITガーって言う意見もあるだろうが、CでもJITしてはいけないわけではなくて、
Cでも関数ポインタが不変なら関数の中身を差し替えたところで問題はない。
だからスカスカに配置しておいて差し替えることも可能ではある。(誰もやってないが)
そもそもDLLだけアップグレードすることは今でも問題ないわけだし。
速度面でC/C++に勝つ芽は今後ともない。

.NETのコンセプト、全ての言語/環境で同じフレームワーク、というのは素晴らしかった。
ただそれも過去形だ。
色々あった言語(VB/J++/VC++)も結局C#に統合されつつあるし、あとはせいぜいF#位か。
.NET compactは結果的にマーケットを取れずに失敗した。
全ての言語/環境での共通フレームワークはHTML/ブラウザでほぼ確定した。

今C#がまだ生きているのはJavaがあの体たらくだからだ。
とはいえ、見て分かるとおり結果的にC#とJavaはモロ被りだ。
そして一応Javaも動きだした。(Java8)
JavaとC#のシェアでは喧嘩にならないし、Javaで済む場合にC#を選ぶ理由がない。

今現在はJavaは相変わらず糞だが、今後機能追加されてC#との差が無くなると死ぬのはC#。
C#信者はこれをちゃんと認識しておいた方がいい。
C#は差別化出来ていない。

926:デフォルトの名無しさん
17/01/28 00:01:46.77 lJFdXfrP.net
20年も残るなら十分

927:デフォルトの名無しさん
17/01/28 00:15:29.48 vlmW/cIj.net
>>914 ※個人の思い込みです。

928:デフォルトの名無しさん
17/01/28 00:16:54.48 rD7WeMm9.net
後はbuilderスレ辺りで続きをやって下さいって事で

929:デフォルトの名無しさん
17/01/28 00:24:24.84 lGyRVc7d.net
>>914
10年前の過去スレかと思ったわ。

930:デフォルトの名無しさん
17/01/28 00:29:22.98 GpK52peC.net
JAVAは特許絡みで自滅しそうだけどな。
Googleも.NET Foundationに加入したことだし、脱JAVA考えてたりして。

931:デフォルトの名無しさん
17/01/28 00:33:11.09 B8Cbj4aW.net
>>918
だなww

932:デフォルトの名無しさん
17/01/28 00:50:41.15 cRpkhDFF.net
Javaは環境に排他的なところがあるからなあ
JVMの世界にどっぷり浸かってしまえば楽なんだが、
PHPやらRailsやら他にもいろいろ使ってるとJavaだけデプロイが異色すぎる
その点 .NET Core は今時のWebらしいデプロイ方法を実現してるので非常に馴染みやすい
Javaの置き換えというより、スクリプト+αとしてのGoに代わる選択肢の一つとして普及する可能性は高いんじゃないかな

933:デフォルトの名無しさん
17/01/28 01:05:26.39 iWacJ3fP.net
.net nativeがスタティックリンクでライブラリから必要なクラスだけ取り込む仕組みなのを知らないとはね

934:デフォルトの名無しさん
17/01/28 03:02:12.31 VlCpYCgG.net
>>914
それ俺じゃないし、そのレスもAOTの定義次第でしょ
君が言葉の定義にこだわりがあるのはわかったからそんなにAOTに過剰反応するな

言語の20年後は予想するだけ無駄
C/C++もgoやrustに置き換えられてるかもしれないし、Javaの代わりにKotlinがJVMの中心になってるかもしれない
ハードと通信の向上で富豪プログラミングができるといいけど、ナノマシンとかの制御のために今より貧相なハードウェア要件だったりするかもね

935:デフォルトの名無しさん
17/01/28 06:50:26.81 7LkpJPRm.net
C++が、FORTRAN化している。

936:デフォルトの名無しさん
17/01/28 07:29:56.62 bLDCN2m1.net
>>916
妄想だろ w
本人楽しそうだしいいんじゃね?

937:デフォルトの名無しさん
17/01/28 09:05:59.37 O0GHMxPw.net
VisualStudioの無いC#なんて

938:デフォルトの名無しさん
17/01/28 09:35:59.59 O0GHMxPw.net
rust.NETは未だかね?

939:デフォルトの名無しさん
17/01/28 09:48:31.29 vlmW/cIj.net
>>926
Windows7に標準装備されてるcsc.exeは役立ったよ
入力支援のないメモ帳でコーディングするのはちょっと面倒だったけど
小物アプリ作ったり、暇つぶしに十分だった

940:デフォルトの名無しさん
17/01/28 11:45:36.61 QNTErMWx.net
>>918
確かに10年前もほぼ同じ状況だったろうね。
ただJavaはそこから全く進歩しなかった。それで延命してる。

>>919
MSは何だかんだで技術力は相当あるし、OracleではJavaを発展させられないのも事実だ。
とはいえ、周回遅れでよければ他言語のいいところを採り入れればいいだけ。
これならOracleにも出来る。
今のC#が生き残るとしたらJavaを食らうことだが、
現代のCOBOL化しつつあるJavaはもう食いきれない。
(Javaは向こう30年の需要はあるし、その後他言語に移行するメリットもない)
周回遅れであってもJavaが追いついてくる限りC#は死ぬ運命だ。
(ただし逆に、周回遅れであるうちは死にきらないとも言えるが.。)

>>921
Javaが殿様商売でブラウザから外されてあたふたしていたのは事実だ。
Web系の連中はその辺も含めてJavaは嫌いかもしれないね。
とはいえC#がサーバサイド言語として君臨するとも思えない。
C#にはサーバ用途のサポートがなく、移行される理由がない。
C#の特徴はLINQだけど、それがどこの分野にフィットするかだね。

941:デフォルトの名無しさん
17/01/28 11:46:16.89 QNTErMWx.net
>>923
分からないことは考えない、さすがのゆとりだな。
確実に言えるのは、今のままのC#だと生き残る芽がないこと。
もちろんMSも分かっているだろうから、色々試してはいるのだろうけど。

C#はPascalと同じでベンダーが一つだ。よってMSが辞めますといったらいきなり終わる。
C/C++はその点各社各様なので誰も終わりの号令を出せない。
機能的にもあの範囲では完成しているし、今後共、流行はしないが使われ続けるだろう。
ただし開発効率がいいとは誰も思ってないだろうし、その点色々努力は為されるはずだ。

JVM言語群はJavaの発展には寄与するだろう。
ただそれらもJavaが追いついてくれば死ぬ運命にある。もっともこれは幸せな死だが。
で、C#もランタイムが違うだけでほぼJVM言語群と立ち位置が同じだろ、という話。

お前らが「C#は永久に不滅です!」なんて思ってるのなら完全に勘違いだぞ、というだけ。
ただそこまで信者化する理由もよく分からんのだがな。
C#が死ぬ頃にはC#とJavaの差異も今より無くなっているはずで、移行は容易だ。
逆に差異がある状態ならC#が死ぬこともない。

942:デフォルトの名無しさん
17/01/28 11:51:01.14 sBhxwabY.net
次スレはふらっとみたいにワッチョイ付けてもらえるとNG楽でありがたい

943:デフォルトの名無しさん
17/01/28 12:03:08.93 PWlkAQF7.net
C#の心配はもういいからとりあえず病院行ってこいよ

944:デフォルトの名無しさん
17/01/28 12:09:23.15 7tAJxods.net
もう言語の優劣とかこの後とか考えるのやめようよ
好きなの使えばいいじゃん

945:デフォルトの名無しさん
17/01/28 12:09:39.25 q55sXuC9.net
>>926
つ SharpDevelop

946:デフォルトの名無しさん
17/01/28 12:13:41.44 7tAJxods.net
C#なんてこの後廃れる一方だから気にするんじゃないよ
俺は使いたいから使ってるだけ

コンピューターサイエンスジャンルとかじゃもうpythonに追いつけない
入門者もc#よりpy選んでるらしいし

時代遅れのc++使ってる人も流行ってるからとか他が使えないって理由じゃないでしょ
使いたいから使うでいいよ

947:デフォルトの名無しさん
17/01/28 12:29:18.26 op86qfG/.net
>>931
あんたがNGにしやすくするためだけに
2ちゃんねるの特徴を捨て去って全員強制コテつけろというのはひどいエゴだと思う

948:デフォルトの名無しさん
17/01/28 12:36:35.24 kK1HMpWm.net
>>929
C#にサーバー用途のサポートがないって、一体こいつはなんのことを言ってるんだ
まさかどっか別のパラレルワールドの住人なのか、それともC#と言う名の別のマイナーな別言語の話をしていたのか

949:デフォルトの名無しさん
17/01/28 12:38:31.29 GpK52peC.net
ワッチョイ付けてるスレは増えてきてるし、賛成が多ければ構わないだろ
強制コテも一週間で変わるんだし、IP表示が無ければ反対する真っ当な理由が思いつかない

950:デフォルトの名無しさん
17/01/28 12:41:01.92 XpAKmUmz.net
>>936
みんなエゴ丸出し自己中でいくのが2ちゃんねるの特徴よ

951:デフォルトの名無しさん
17/01/28 12:41:42.84 rD7WeMm9.net
言語の優劣がどうでもいい訳じゃないけど
比較なら他所のスレでやってくれ
C++ Builder vs C# どっちがいいか教えて
スレリンク(tech板)

952:デフォルトの名無しさん
17/01/28 12:42:51.15 s1e/PAHl.net
>>938
それぞれ好きなスレ立てて使えばいいんだよ
どの板でもワッチョイ有り無しでスレが分かれているのをよく見るし
逆にその手の議論で荒れだすとどこでもひどい有様になる

953:デフォルトの名無しさん
17/01/28 12:50:41.06 op86qfG/.net
>>938
一週間で変わるというのは違うよ
3、4文字目は仕様上永久固定だし、表面上変わる1、2、5~8文字目も簡単に逆引きできるから実質永久固定だよ

954:デフォルトの名無しさん
17/01/28 12:58:20.48 ivgBCMum.net
「SNSじゃあるまいし、なんで2chでわざわざコテハンを強制されなきゃならないのか」は真っ当な理由じゃないのかな…

955:デフォルトの名無しさん
17/01/28 13:00:33.35 k4gxsyFf.net
俺もワッチョイスレには書かなくなった

956:デフォルトの名無しさん
17/01/28 13:01:40.71 mpmWyhNT.net
明らかに不適切な発言をしない限りはコテハンでも問題ないでしょ

957:デフォルトの名無しさん
17/01/28 13:16:35.58 1Ptz3K6u.net
そんなコテハン好きならstackoverflowにでも行けばよろしいやん
なぜ2ちゃんをコテハン化する必要があんの?

958:デフォルトの名無しさん
17/01/28 13:29:21.18 yHdW8px1.net
荒しがいるからだろw

959:デフォルトの名無しさん
17/01/28 13:33:06.15 WlIlAAzs.net
>>946
よう荒らし
元気か?死ね

960:デフォルトの名無しさん
17/01/28 13:40:45.05 op86qfG/.net
自治厨が自分に賛同する奴以外を荒らし扱いしてるだけか

961:デフォルトの名無しさん
17/01/28 13:45:46.68 Bb/tAbed.net
荒らしだけならまだいいが、沸点が低いのかプライドが安いのか
煽りにのって相手を始める低脳が多過ぎる
本当に目障りでNGが面倒臭くてワッチョイもやむを得ないと考えてしまうのはこっちが原因

962:デフォルトの名無しさん
17/01/28 13:47:14.75 5yCHiIBr.net
c#のスレで他言語の話を連投してる時点で
誰がどう見ても荒らしだと思うが

963:デフォルトの名無しさん
17/01/28 13:47:33.37 6ehsSW1c.net
uyのスレ立て荒らし以来変なのが増えたな

964:デフォルトの名無しさん
17/01/28 13:48:54.50 ktdFkm2m.net
そんなにNGされたくないのかな?

965:デフォルトの名無しさん
17/01/28 13:50:24.20 WlIlAAzs.net
どう見てもそうだろ

966:デフォルトの名無しさん
17/01/28 13:53:53.44 ya7J4hzr.net
他言語の話なんてしてないのに荒らし扱いされて死ねって言われたんだけど

967:デフォルトの名無しさん
17/01/28 13:55:50.40 JTtKbdRr.net
昔、JavaやVBで暴れてた低脳馬鹿が今はC#で暴れてるふうにしか見えない。

だって言ってることが同じだものw ○○は遅くない!! ○○で十分!!!

968:デフォルトの名無しさん
17/01/28 13:58:32.18 yHdW8px1.net
>>948
それは酷すぎ。荒しと変わらんぞ。

969:デフォルトの名無しさん
17/01/28 13:59:47.36 vlyo6wmu.net
相手してる生ゴミがうざいって人は連鎖NGができるブラウザに変えるのはどうだろうか?
強制はできないけど…。

970:デフォルトの名無しさん
17/01/28 14:06:49.21 ya7J4hzr.net
ワッチョイでNGが便利になるって言う人たちは、なぜかNGwordを工夫したり連鎖NGすることはできないという不思議現象

971:デフォルトの名無しさん
17/01/28 14:07:29.61 y9Lbrz1V.net
自分でNGできないような奴がこの板にいる方がどうかしている
無能と自白しているようなもんだろ

972:デフォルトの名無しさん
17/01/28 14:11:07.34 XpAKmUmz.net
ごちゃごちゃ言わず、ワッチョイありなし、2つ立てて盛り上がった方を採用すりゃいんだよ

973:デフォルトの名無しさん
17/01/28 14:44:57.36 k4gxsyFf.net
スレも無料じゃないんだぞ
節約しないと

974:デフォルトの名無しさん
17/01/28 14:48:10.28 s1e/PAHl.net
ほらスレ違いで荒れる
このまま埋めてくれればいいよw
>>961
採用っていうか使われなくなった方が消えたり過疎るだけ

975:デフォルトの名無しさん
17/01/28 14:53:25.19 GmC+rupt.net
2chの基本だけど、スレが荒れる(このスレの現状はそこまで行ってないと思うが)と
ギャーギャー騒ぎだす連中の大半は本当はギャーギャー言いたいだけの寂しい奴ではある。

要するに、本当はスレッドの趣旨にそったレスが淡々と続く状況なんか内心望んでない奴、
もっと言えばまともなレスをする能力がない奴に限って文句言ってるのね。
本当はウンコが大好物なウンコ蠅がウンコの周りを周回しながらウンコが臭いって文句言ってる図式だねw

「スレッドの平和」を本当に望んでいる人(俺もその一人)は、逆説的だけど
神経質にスレ違いの話題を咎める連中に与しない方がいいと思うよ。
それは上記の「ウンコ以上にうっとうしいウンコ蠅」をのさばらせることにしかならないからね。

まあそうは言ってもあんまりスレ違いの議論が延々続くのもうっとうしいのも確かだから、
このスレに限らずスレ違いの議論が続いた時に誘導する「何でも議論スレ」みたいのが
あったらいいのかもしれないとも思う。

976:デフォルトの名無しさん
17/01/28 15:11:26.13 VlCpYCgG.net
>>930
C#は永久に不滅とか信者とか、存在しない敵を叩くなよ
他の言語でも同等の処理があるLINQを特徴というのは、理解してないからか?

C#もJavaも互換性最優先なので、いつか時代遅れの限界が来て、保守以外では使わない言語になる気もする
死ぬならVB6みたいな長期サポートで亡霊にならないといいんだけど

977:デフォルトの名無しさん
17/01/28 15:16:41.71 VlCpYCgG.net
そういえば、llilacはどうなったのかな
LLVM化は結構需要ある気がするんだが

978:デフォルトの名無しさん
17/01/28 16:06:14.69 VlGJ2K6H.net
荒れすぎだろ
投票による自治機能があるanontownに来ないか?
登録制だけどメアド不要だから簡単
URLリンク(anontown.com)

979:デフォルトの名無しさん
17/01/28 16:20:45.03 BREm5bG1.net
>>965
いつかはそうなるだろうけど、今のところはその兆候はないな

980:デフォルトの名無しさん
17/01/28 16:41:32.14 ktdFkm2m.net
>>964
2ちゃんにおいて三行以上の長文はマナー違反だぞ

981:デフォルトの名無しさん
17/01/28 16:44:14.69 op86qfG/.net
立てにいく

982:デフォルトの名無しさん
17/01/28 16:48:51.77 op86qfG/.net
次スレ

C#, C♯, C#相談室 Part92
スレリンク(tech板)

983:デフォルトの名無しさん
17/01/28 17:45:23.05 JQ2q8v+C.net
>>965
数年前、高速なNVRAM的な物が安価で作れるようになって
コンピュータの構成が大きく変わるなんて話が一部で盛り上がってたけど、
その手のパラダイムシフトが起こらない限り、プログラミング言語の世界でも
そんなガラガラポンは起こらないだろう

984:デフォルトの名無しさん
17/01/28 19:05:48.32 oY/klkah.net
一体みんな誰と戦っているんだ

985:デフォルトの名無しさん
17/01/28 20:01:47.30 XnHJw37P.net
>>973
オラもそう思う

986:デフォルトの名無しさん
17/01/28 20:12:25.54 09upZDzm.net
自分以外は敵というスタンスがトランプ流w

987:デフォルトの名無しさん
17/01/28 21:15:25.00 yCMaAzsY.net
C#はマルチプラットフォーム化でサーバーサイドで需要がますます拡大するし
クライアントでもWPFが実用的になってくるんじゃないかな

988:デフォルトの名無しさん
17/01/28 21:23:25.46 buSCJS7G.net
胡散臭いCMだな

989:803
17/01/29 12:03:54.50 6CKnMYhm.net
>>818
>>819
>>831
64bitでコンパイルする
2GB内に配列を分割する
などいろいろやりましたがメモリオーバーになってしまいどうしても実行できませんでした
結局、元のファイルを分割し、最後に結合する方式にしてやっと通りました
使用メモリ見ると10GB位食ってましたが一応全部実行できています
ご協力ありがとうございます

990:デフォルトの名無しさん
17/01/29 12:28:52.14 NqGwYzj0.net
>>978
配列に入れて何がしたいのか最後まで聞けなかったけど、FileStreamで読み書きじゃ駄目だったの?

991:デフォルトの名無しさん
17/01/29 12:34:03.49 Be2uFNKC.net
同意見
そんなもん全部メモリに読んだところで
どうせシーケンシャルに処理する以外にやれることがあるとは思えない

992:803
17/01/29 13:07:42.19 6CKnMYhm.net
>>979
BinaryWriterで挿入操作ができれば使っていたのですが
以下を見るとできないようなので使いませんでした
URLリンク(dobon.net)

993:デフォルトの名無しさん
17/01/29 13:12:51.28 WfZCQfEI.net
一時ファイルに元のファイルの内容と挿入データを書き込む
→元のファイルを削除する
→作成した一時ファイルの名前を元のファイルの名前に書き換える
でできると思うけど自分の好きな方法でうまくいったのならいいんじゃね

994:803
17/01/29 13:29:04.76 6CKnMYhm.net
>>982
>一時ファイルに元のファイルの内容と挿入データを書き込む
確かにこのやり方がスマートでした
元のコード流用しようとしたので今のやり方になってしまいました
あらかじめわかっていたら・・・

995:デフォルトの名無しさん
17/01/29 17:25:54.20 UOF0Asn0.net
うめ

996:810
17/01/29 22:35:39.11 F8/CipCU.net
>>810です。反応が遅れてすいません。現在は、
クラスのインスタンスの複数のプロパティの値を比較して等価かどうか判定しているのですが
データをリストに追加する際、2種類の等価比較法(IEqualityComparer)を用いています

つまり追加対象のデータのうち、
まず弱い比較(少なめのプロパティだけが一致するか比較)で
既存のリストにないデータの「候補」をざっくりピックアップして、
候補たちに少々時間のかかる処理をかけてから(一部プロパティが書き換えられる)、
次に強い比較(多めのプロパティを比較)で候補の中から真に「新しい」ものをリストに追加しています

PosgresやLocalDBといったデータベースでは、こういうことって簡単にできるんでしょうか
ネット検索してみたところ複数のプロパティを比較すること自体は
UNIQUE制約(?)というので出来そうに思ったんですが、
現在やっているような2段構えの比較法は実現可能なんでしょうか?

997:デフォルトの名無しさん
17/01/29 22:51:26.56 M0HgmB1M.net
二段構えにする必要はない
比較に必要な全てのカラムセットにuniqueインデックス張りなさい

998:デフォルトの名無しさん
17/01/29 22:55:35.08 F8/CipCU.net
>>986
それだと誤判定になりませんか?
追加前のデータと実際に追加するデータでは
一部プロパティ(弱比較ではチェックしないが、強比較ではチェックするプロパティ)の値が異なっているのですが…

999:デフォルトの名無しさん
17/01/29 23:02:20.70 faIlAfcC.net
>>987
強比較の値がDB上


1000:に固定できるなら、最初から強比較でやっても十分な速度が出ます 取り出してから変化する性質なら、弱比較でDBから取り出し値を生成してからメモリー上で強比較で良いんじゃないの?



1001:デフォルトの名無しさん
17/01/29 23:27:53.21 F8/CipCU.net
>>988
すいません、「DBから取り出す」という表現が何を指しているのかよくわかりません…

いま思案しているのはデータの集計作業時ではなく登録作業時の話です
各データについて、一部のプロパティの値を確定させるには処理時間がかなり必要になっています

追加登録したいデータたちについて、このプロパティ値をあらかじめすべて確定するのは非常に時間がかかるので
まず弱比較でざっくりと追加可能な候補(プロパティ値を確定しなければならないデータたち)を絞っているのです

今はこんな風にしてます(実際のコードでは日本語変数じゃないです)

候補データリスト = 追加したいデータのリスト.Except(全リスト, new MyClass_WeakComparator()).ToList();

候補データリスト について全プロパティ確定作業; //←重い

全リスト = 全リスト.Union(候補データリスト).ToList();

1002:デフォルトの名無しさん
17/01/29 23:33:19.34 F8/CipCU.net
>989補足
Union()のところで既定の等値比較子として強比較が使われています

1003:デフォルトの名無しさん
17/01/29 23:37:15.13 M0HgmB1M.net
>>989
insert into 処理対象テーブル
select 追加後の値を得る計算式
from 処理対象テーブル
where 追加対象を得る条件式

これでいいんじゃないの?
弱比較とかよくわからん言葉遣いはやめた方がいい混乱するから

1004:デフォルトの名無しさん
17/01/29 23:50:32.58 M0HgmB1M.net
なんか違うなこうか

insert into 全リスト
select 任意の計算式
from 追加データ
where not exists (
select *
from 全リスト
where 簡易な比較条件式)
and 完全な比較条件式

インデックスは簡易な比較に使うカラムだけでいいよ

1005:デフォルトの名無しさん
17/01/30 00:02:56.22 kb+lR8OL.net
>>992
やはり、条件式を2種類地道に書くしかないんですか…長くてハゲそう

>インデックスは簡易な比較に使うカラムだけでいいよ

アドバイスありがとうございます

1006:デフォルトの名無しさん
17/01/30 00:07:16.67 YrqXkGEW.net
>>989
それだと「弱比較」で一致してしまった物は全部捨ててしまっているがいいのか?
>>985の書き方だと、「弱比較」で一致しても「強比較」で一致しない物があり、
それは書き込むと読める。
まあこの辺はそちらがやればいい話だが。

1007:デフォルトの名無しさん
17/01/30 00:14:31.63 GO+RhKVN.net
数千行のSQLとか当たり前だから!!!
そのためのDBMSでしょ!!!

1008:デフォルトの名無しさん
17/01/30 00:23:01.74 RAZ09caE.net
1回のクエリで完結させようとせず
1次候補抽出クエリ → ローカルで1次候補のプロパティ書き換え → 最終候補抽出&インサートのクエリ
の3段構えにしてもいいんじゃないかと思うけど

1009:デフォルトの名無しさん
17/01/30 00:33:18.83 kb+lR8OL.net
>>994
>「弱比較」で一致してしまった物は全部捨ててしまっているがいいのか?

詳しくは書けませんが、やりたい動作としてはその動作でOKです
985の説明はちょっと正確ではありませんでした

>>995
大規模なデータベースを触ろうとするのは初めてだったので…すいません

>>996
どっちみち長い比較条件を書かないといけないのは避けられそうにないので
その方法でもよさそうですね

1010:デフォルトの名無しさん
17/01/30 01:03:13.10 9w4b/GJp.net
>>995
SQLが数千行もあって当たり前なの?異常じゃないの?SQLだよ?

1011:デフォルトの名無しさん
17/01/30 02:19:40.86 ty17mMxy.net
SQL Serverは問合せ文と制御文を1つのストアドに混在できるので複雑な工夫が容易で、
腕が良ければ数千行の複雑な処理を書くことによって物凄く高速化できることがある

Oracleは混在できないため複雑な処理を書くには手間がかかり、プログラマーがあまり工夫しなくなり、
そのため腕が上がらず、結果としてSQL Serverより遅いシステムが多いらしい

現在のSQL ServerにはOracleと同じスナップショット分離(古い人は「行ロック」って言う)があるが、
2000の頃はなかった(今でもデフォルトでオフになってる)ため、高速な更新処理が必要だったことも腕に関係すると思われる
(スナップショット分離があれば、ダラダラ更新しても他ユーザーの閲覧に迷惑かけない)

1012:デフォルトの名無しさん
17/01/30 02:31:32.87 RISpHKLn.net
次スレ

C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
スレリンク(tech板)

1013:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch