!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part146
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
2019/12/11(水) 22:12:11.28ID:d09CciDz0315デフォルトの名無しさん (ワッチョイ e5ae-W/+2)
2020/01/07(火) 18:25:35.96ID:Tv0SPXaP0 >>313
はい、Excelの計算誤差も含めてC#で再現したいのです
Excel固有の関数の再現では無く、除算乗算程度です
>>314
Excelは簡単な計算でも誤差が出る時があるのは理解していますが、それでもExceによる計算結果lを「神様」として完全一致させるのが理想です
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://answers.microsoft.com/ja-jp/office/forum/office_2013_release-excel/excel%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AA%E8%A8%88/e5421c34-8053-4132-a0a6-14729e505376
はい、Excelの計算誤差も含めてC#で再現したいのです
Excel固有の関数の再現では無く、除算乗算程度です
>>314
Excelは簡単な計算でも誤差が出る時があるのは理解していますが、それでもExceによる計算結果lを「神様」として完全一致させるのが理想です
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://answers.microsoft.com/ja-jp/office/forum/office_2013_release-excel/excel%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AA%E8%A8%88/e5421c34-8053-4132-a0a6-14729e505376
316デフォルトの名無しさん (ワッチョイ d188-IJNu)
2020/01/07(火) 18:30:52.77ID:RhWBTAz60 内部でexcel操作するライブラリを使って実際にexcelに計算させてその結果をもらう
って方式じゃだめかな?
何にせよ絶対関わりたくない要求仕様だなw
って方式じゃだめかな?
何にせよ絶対関わりたくない要求仕様だなw
317デフォルトの名無しさん (ワッチョイ 8201-TJkF)
2020/01/07(火) 18:36:18.00ID:sMehhi+20318デフォルトの名無しさん (ワッチョイ e5ae-W/+2)
2020/01/07(火) 18:59:31.78ID:Tv0SPXaP0319デフォルトの名無しさん (ワッチョイ ed0c-UAPS)
2020/01/07(火) 19:04:39.58ID:EurMb9rX0 一体どんなアホが集まればそんなふざけた案件が出来上がるんだ…
320デフォルトの名無しさん (スップ Sdc2-Cg7n)
2020/01/07(火) 19:18:53.11ID:OMl1FHHvd >>318
EPPlusやClosedXMLなら、Excelがマシンにインストールされている必要はないやろ
EPPlusやClosedXMLなら、Excelがマシンにインストールされている必要はないやろ
321デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
2020/01/07(火) 20:18:05.17ID:cpbbTuYka これはC#じゃなくて、CやC++に言えることかもしれませんが、
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?
322デフォルトの名無しさん (アウアウウー Saa5-CnQr)
2020/01/07(火) 20:25:58.17ID:IHn/p+8Ca323デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/07(火) 20:26:35.52ID:YKIaA9us0 >>321
仮想メモリでググってみな
仮想メモリでググってみな
324デフォルトの名無しさん (ワッチョイ c22c-lxBK)
2020/01/07(火) 20:27:46.08ID:+2sDQ8Ye0 今どき400MBぐらい物理メモリにのっけてもそこまでって感じだけど
仮想メモリで調べよう
仮想メモリで調べよう
325デフォルトの名無しさん (ワッチョイ adda-eJH9)
2020/01/07(火) 20:28:50.54ID:23MsATD60 >>321
10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。
ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ
10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。
ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ
326デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/07(火) 20:33:16.30ID:YKIaA9us0 >>322
C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?
C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?
327デフォルトの名無しさん (ワッチョイ 5f9b-Eg5K)
2020/01/08(水) 16:03:59.03ID:Sre2vN3k0 google spreadsheet とか ms office online とか 360 でも再現されるのかな
328デフォルトの名無しさん (ワッチョイ 5f7d-tgR8)
2020/01/10(金) 02:04:40.36ID:aPGnNlsf0 非同期メソッド(async/await)の必要性について教えてください。
Task.RunやTask.Factory.StartNewメソッドを使えば、タスクを別スレッドで生成・実行できると思います。
またこれらのメソッドによる戻り値を呼び出し側で使いたければ、Task<TResult>クラスのResultプロパティを利用してやればよいと思います。
となると、上記のメソッドと比べ、非同期メソッド(async/await)の必要性や有用性って何なんでしょうか?
Task.RunやTask.Factory.StartNewメソッドを使えば、タスクを別スレッドで生成・実行できると思います。
またこれらのメソッドによる戻り値を呼び出し側で使いたければ、Task<TResult>クラスのResultプロパティを利用してやればよいと思います。
となると、上記のメソッドと比べ、非同期メソッド(async/await)の必要性や有用性って何なんでしょうか?
329デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/10(金) 03:15:36.39ID:doMNh/YUa >>328
この記事読めば最初の10分でわかるよ
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/masterasync_index.html
分からなかったらここで人に聞いてもたぶん納得するような解答は得られないと思う
その場合は諦めて下さいw
この記事読めば最初の10分でわかるよ
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/masterasync_index.html
分からなかったらここで人に聞いてもたぶん納得するような解答は得られないと思う
その場合は諦めて下さいw
330デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/10(金) 07:14:44.82ID:1LguP2Z50 読めば読むほどDoEvents大勝利の予感!
331デフォルトの名無しさん (ワッチョイ df01-eaUz)
2020/01/10(金) 17:27:42.50ID:D+gtbuRW0 弊社は庶務おばちゃんのPCですら64bitでメモリ8GB
332デフォルトの名無しさん (ワッチョイ 7f79-G18V)
2020/01/10(金) 17:40:13.71ID:g1glT3r10 >>331
どこから誤爆したのか知らんが10年前の話でもしてたのか?
どこから誤爆したのか知らんが10年前の話でもしてたのか?
333デフォルトの名無しさん (ワッチョイ df2d-guBg)
2020/01/10(金) 21:01:49.43ID:kvQnOJve0 本当はここの話題じゃないのかも知れないけどさあ
.NetCoreアプリ(〜.dllファイル)に対するAppArmorの設定ってどうやるのか解説してるサイトや書籍があったら教えてくれんかな?
dotnetコマンドに対する制約しかかけられないのかな・・・・
.NetCoreアプリ(〜.dllファイル)に対するAppArmorの設定ってどうやるのか解説してるサイトや書籍があったら教えてくれんかな?
dotnetコマンドに対する制約しかかけられないのかな・・・・
334デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/10(金) 21:14:00.77ID:PkgwRlbI0 >>328
async/await で書くと、深いネストのコールバック地獄を避けられるw
async/await で書くと、深いネストのコールバック地獄を避けられるw
335デフォルトの名無しさん (ワッチョイ ffe3-G18V)
2020/01/10(金) 21:38:12.63ID:pVxCiE3h0 >>334
むしろasync/await地獄の始まりなんじゃ
むしろasync/await地獄の始まりなんじゃ
336デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/10(金) 21:46:24.01ID:nE2xZxkX0 >>335
kwsk
kwsk
337デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/10(金) 21:48:34.84ID:aX6A99t20 >>335
KWSK
KWSK
338デフォルトの名無しさん (ワッチョイ 7fad-tNwm)
2020/01/10(金) 23:13:19.94ID:zSF+N+820 >>328
ブロッキングすんなよ…
ブロッキングすんなよ…
339デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/10(金) 23:16:57.47ID:c4Cc7glv0 コールバック地獄のネストがasync/awaitで解消されるわけじゃないんだがな。
340デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/10(金) 23:25:42.90ID:nE2xZxkX0 >>339
なんで?
なんで?
341デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/10(金) 23:40:56.46ID:c4Cc7glv0 コールバック引数に関数リテラルを書いてるからネストが深くなるわけで、それが嫌なら
関数を切り出しておけばいい。
async/awaitを使う場合は最初からそうするしかないってだけ。
関数を切り出しておけばいい。
async/awaitを使う場合は最初からそうするしかないってだけ。
342デフォルトの名無しさん (ワッチョイ df35-sGtB)
2020/01/10(金) 23:45:01.53ID:nE2xZxkX0 まあ逐一処理みたいに並べて書けるから便利だよね。
別の場所に用意したコールバック関数の中に次の処理書くよりマシかな
別の場所に用意したコールバック関数の中に次の処理書くよりマシかな
343デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/10(金) 23:48:54.52ID:c4Cc7glv0 あれ、ここc#スレじゃんw
344デフォルトの名無しさん (ワッチョイ df35-sGtB)
2020/01/10(金) 23:51:08.53ID:nE2xZxkX0 いや、こうか。
そうしないとコールバックで繋いでないな。
f1(x1,y1,
f2(x2,y2,
f3(x3,y3,
f4(x4,y3)
)
)
)
そうしないとコールバックで繋いでないな。
f1(x1,y1,
f2(x2,y2,
f3(x3,y3,
f4(x4,y3)
)
)
)
345デフォルトの名無しさん (ブーイモ MM23-WKbt)
2020/01/11(土) 00:43:53.19ID:HNDaLABiM 目次見る限りasync/awaitまで書いてあるようだが内容古いかな?
C#による マルチコアのための非同期/並列処理プログラミング
http://gihyo.jp/book/2013/978-4-7741-5828-0
C#による マルチコアのための非同期/並列処理プログラミング
http://gihyo.jp/book/2013/978-4-7741-5828-0
346デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/11(土) 10:39:28.88ID:LYbiGn3M0 C#で明示的にメモリを開放する手段はGC.Collect以外にはないんでしょうか?
画像やオーディオファイルを扱うアプリを作っている最中ですが、数百MBのデータを扱い終えても数分はメモリ使用量がそのままで少し気持ち悪いです
GC.Collectを行うと副作用も色々とあるようなので他に手段があればと
画像やオーディオファイルを扱うアプリを作っている最中ですが、数百MBのデータを扱い終えても数分はメモリ使用量がそのままで少し気持ち悪いです
GC.Collectを行うと副作用も色々とあるようなので他に手段があればと
347デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/11(土) 10:49:45.29ID:W2txbHVT0348デフォルトの名無しさん (ワッチョイ 5f7d-vCMi)
2020/01/11(土) 11:09:15.66ID:UtksiWPF0 async/awaitの件解決しました。
ありがとうございました!
ありがとうございました!
349デフォルトの名無しさん (ワッチョイ dfa7-Eq4u)
2020/01/11(土) 11:28:43.37ID:TUd4PMk40 DoEvents最強!
350デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 11:44:58.26ID:tdQ2h9sk0 >>347
普通にミスった
関数ポインタ的なものを渡してるつもりだったけど実行演算子付けてたら意味ないな
f1(x1,y1,(y1,y2)=>
f2(x2,y2,(x3,y3)=>
f3(x3,y3,(x4,y4)=>
f4(x4,y4)
)
)
)
多分こうかな
やっぱりこのほうがいいな
そもそもこんなに非同期処理並べるときあるか分からないけど
await f1(x1,y1)
await f2(x2,y2)
await f3(x3,y3)
f4(x4,y4)
普通にミスった
関数ポインタ的なものを渡してるつもりだったけど実行演算子付けてたら意味ないな
f1(x1,y1,(y1,y2)=>
f2(x2,y2,(x3,y3)=>
f3(x3,y3,(x4,y4)=>
f4(x4,y4)
)
)
)
多分こうかな
やっぱりこのほうがいいな
そもそもこんなに非同期処理並べるときあるか分からないけど
await f1(x1,y1)
await f2(x2,y2)
await f3(x3,y3)
f4(x4,y4)
351デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/11(土) 11:58:16.27ID:W2txbHVT0 それ、非同期ラムダならawaitで待つけど普通のラムダなら普通に呼ぶだけだろう。
awaitで解消できるわけじゃなくて。
awaitで解消できるわけじゃなくて。
352デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 12:03:26.24ID:tdQ2h9sk0 こうか
f1(x1,y1,async (y1,y2)=>
await f2(x2,y2,async (x3,y3)=>
await f3(x3,y3,async (x4,y4)=>
f4(x4,y4)
)
)
)
f1(x1,y1,async (y1,y2)=>
await f2(x2,y2,async (x3,y3)=>
await f3(x3,y3,async (x4,y4)=>
f4(x4,y4)
)
)
)
353デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 12:04:51.20ID:tdQ2h9sk0 いや、これだとasync, await使ってるから本末転倒やな
もう時間ない
もう時間ない
354デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/11(土) 12:28:03.20ID:yg8EbsDw0 >>346
> GC.Collectを行うと副作用も色々とある
あくまで一般的な方針ってだけなので別に自分のアプリで問題(望ましくない時にスパイクを起こすとか)無ければ好きに呼べば良いよ
別にイリーガルなAPIというわけでもない
まあ一般的な話で言えば「メモリ残っててなんか気持ち悪い」程度の理由で呼ぶ必要はまったくないが
> GC.Collectを行うと副作用も色々とある
あくまで一般的な方針ってだけなので別に自分のアプリで問題(望ましくない時にスパイクを起こすとか)無ければ好きに呼べば良いよ
別にイリーガルなAPIというわけでもない
まあ一般的な話で言えば「メモリ残っててなんか気持ち悪い」程度の理由で呼ぶ必要はまったくないが
355デフォルトの名無しさん (ラクッペ MMf3-elwi)
2020/01/11(土) 12:48:55.66ID:iMRI2zWpM >>350のコールバックが非同期で呼び出されるってことだろうから普通に並べて呼ぶだけじゃ無理じゃね
356デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 10:53:37.47ID:dSru1J0h0 >>354
たしかに基本的には問題になりませんが、
数GBを消費することもあり、もしそのときに使用者が他に重いプログラムを起動するなどするとメモリ不足になる場合もあるかなと・・・
こういうプログラムはGC任せにするのではなくC++などで作るべきという結論になるんでしょうか?
たしかに基本的には問題になりませんが、
数GBを消費することもあり、もしそのときに使用者が他に重いプログラムを起動するなどするとメモリ不足になる場合もあるかなと・・・
こういうプログラムはGC任せにするのではなくC++などで作るべきという結論になるんでしょうか?
357デフォルトの名無しさん (ワッチョイ 7f52-4RSc)
2020/01/12(日) 11:39:38.30ID:hca/fTZV0 >>356
仮想メモリでググってみて
仮想メモリでググってみて
358デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/12(日) 12:06:08.27ID:EKUpo6h10 >>346
IDisposableなオブジェクトがあれば不要になった時点できちんとDispose()するようにするとかかな。
画像を扱っているんであればSystem.Drawing.Imageとかいろいろあるんでは。
IDisposableなオブジェクトがあれば不要になった時点できちんとDispose()するようにするとかかな。
画像を扱っているんであればSystem.Drawing.Imageとかいろいろあるんでは。
359デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/12(日) 12:10:08.97ID:VFqe+WSm0 usingで囲むのが定石かな?
360デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 12:28:05.83ID:dSru1J0h0 主にはMemoryStreamで巨大データを扱っていてちゃんとDisposeは行っていますが、タスクマネージャーで監視している限りだと中々メモリ使用量が減りません
361デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 12:32:04.56ID:21O0ncu50 >>356
その消費されているメモリがどのメモリなのかきちんと把握しないと意味がないよ
マネージドメモリが消費されればそれだけ手動でCollectせずともGCは働くはず
なのに残っているとしたらstatic変数等で無駄に参照し続けている可能性がある
アンマネージドなメモリなら既に書かれてる通りDisposeを必要な場面で呼び出していない可能性がある
加えてGC性能の観点からはDispose(正確にはファイナライザの方だけど)をGC任せにするのは
程度問題ではあるけど基本的にはご法度
現状「メモリが大量に消費されているが手動でCollectして大丈夫か」の情報だけでは現状方針は立てようがない
その消費されているメモリがどのメモリなのかきちんと把握しないと意味がないよ
マネージドメモリが消費されればそれだけ手動でCollectせずともGCは働くはず
なのに残っているとしたらstatic変数等で無駄に参照し続けている可能性がある
アンマネージドなメモリなら既に書かれてる通りDisposeを必要な場面で呼び出していない可能性がある
加えてGC性能の観点からはDispose(正確にはファイナライザの方だけど)をGC任せにするのは
程度問題ではあるけど基本的にはご法度
現状「メモリが大量に消費されているが手動でCollectして大丈夫か」の情報だけでは現状方針は立てようがない
362デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 12:37:20.88ID:dSru1J0h0 >>361
一応上でも書きましたがメモリリークの相談ではありません
一応上でも書きましたがメモリリークの相談ではありません
363デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 12:52:17.43ID:21O0ncu50364デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 13:07:52.95ID:dSru1J0h0 >>363
言葉足らずでしたが、Dispose処理を行ったであろうタイミングで減らないというだけであって待つなりそこでCG.Collectを行えばちゃんと解放はされます
ただ上でも言ったようにGC.Collectは副作用があるようなのでC++のdeleteのようなものは無いのかなと
言葉足らずでしたが、Dispose処理を行ったであろうタイミングで減らないというだけであって待つなりそこでCG.Collectを行えばちゃんと解放はされます
ただ上でも言ったようにGC.Collectは副作用があるようなのでC++のdeleteのようなものは無いのかなと
365デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/12(日) 13:49:29.53ID:GXqrVy4G0 GCって動かしてやらないと限界まで解放しないよ
限界までいって開放時のその時起きるのはストップザ・ワールドと呼ばれる有名な現象
その前にもメモリの残量を見てるアプリが動かなくなる
あ、メモリ少ないじゃん俺起動やめんべ
こういうのも絡んで再現不能な不具合を多々撒き散らす
常駐アプリならストップザ・ワールドが困るなら定期的に解放せんとまずい
ちなみにストップザ・ワールドは10分は動かなかったときがある
限界までいって開放時のその時起きるのはストップザ・ワールドと呼ばれる有名な現象
その前にもメモリの残量を見てるアプリが動かなくなる
あ、メモリ少ないじゃん俺起動やめんべ
こういうのも絡んで再現不能な不具合を多々撒き散らす
常駐アプリならストップザ・ワールドが困るなら定期的に解放せんとまずい
ちなみにストップザ・ワールドは10分は動かなかったときがある
366デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 13:50:45.08ID:21O0ncu50 >>364
まあ生存しているマネージドメモリの正体がわかり切っていて処理の途中でも無いなら
(例えば単純にユーザー操作からファイルの読み込みが完了して結果が表示された後とか)
それはCollect使っても構わない場面だと思うよ
結局副作用と言ってもヒューリスティックなGCの調整に影響が出て
細かくGCが起きる場面でのスループットが低下する、かもしれない
とかその程度だしね
まあ生存しているマネージドメモリの正体がわかり切っていて処理の途中でも無いなら
(例えば単純にユーザー操作からファイルの読み込みが完了して結果が表示された後とか)
それはCollect使っても構わない場面だと思うよ
結局副作用と言ってもヒューリスティックなGCの調整に影響が出て
細かくGCが起きる場面でのスループットが低下する、かもしれない
とかその程度だしね
367デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/12(日) 13:53:55.26ID:F6k+/xNLM サーバーじゃなくてクライアントアプリだろ?
ガンガンGC.Collect打っても全然問題ないよ
ガンガンGC.Collect打っても全然問題ないよ
368デフォルトの名無しさん (ワッチョイ 5f5f-alJZ)
2020/01/12(日) 13:54:13.68ID:yOfvFL1A0369デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/12(日) 14:00:58.90ID:GXqrVy4G0370デフォルトの名無しさん (ブーイモ MM0f-2EI0)
2020/01/12(日) 14:21:33.28ID:EstEf4vMM >>364
大きなメモリブロックを頻繁に扱うならアンマネージドメモリを使いなよ
アンマネージドメモリなら開放したいときに無駄なく開放できる
今はspanがあるからアンマネージドメモリの扱いも簡単だ
GCの手動実行は開放したいメモリ以外にもマークアンドスイープが発生しちゃうから効率が悪い
ちなみにMemoryStream.Disposeはインターフェース共通化のために実装してあるだけで呼び出す意味はない
大きなメモリブロックを頻繁に扱うならアンマネージドメモリを使いなよ
アンマネージドメモリなら開放したいときに無駄なく開放できる
今はspanがあるからアンマネージドメモリの扱いも簡単だ
GCの手動実行は開放したいメモリ以外にもマークアンドスイープが発生しちゃうから効率が悪い
ちなみにMemoryStream.Disposeはインターフェース共通化のために実装してあるだけで呼び出す意味はない
371デフォルトの名無しさん (ワッチョイ 7fad-tNwm)
2020/01/12(日) 14:32:31.87ID:fMqCO5na0 逆に10分止めちゃうようなコードを見てみたい
372デフォルトの名無しさん (ワッチョイ 5f63-hsX7)
2020/01/12(日) 14:39:35.43ID:OVUZbrRA0 GCが分単位でかかる状況ってそもそも作り出せるもの?
373デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/12(日) 14:49:38.22ID:KwEpglzAa ストップザワールドてw
PC-98の時代で頭が止まってるのかwww
PC-98の時代で頭が止まってるのかwww
374デフォルトの名無しさん (ワッチョイ 7f01-KDxU)
2020/01/12(日) 16:50:21.94ID:M8sF3s6B0 時間経過だけを条件にフルGCがされることってあるのかな?
メモリリークではないと言ってるけど状況的にそう言える根拠はないような・・・
- 数GBが開放されない
- 数分待てば開放される(ように見える)
- GC.Collectすれば開放される
- タスクマネージャーでのみ確認
メモリリークではないと言ってるけど状況的にそう言える根拠はないような・・・
- 数GBが開放されない
- 数分待てば開放される(ように見える)
- GC.Collectすれば開放される
- タスクマネージャーでのみ確認
375デフォルトの名無しさん (ワッチョイ dfa7-Eq4u)
2020/01/12(日) 17:07:03.57ID:M6sT7X550 MSDNより
ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。
・システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
・マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。
・GC.Collect メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。
・システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
・マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。
・GC.Collect メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
376デフォルトの名無しさん (ワッチョイ 7f59-G18V)
2020/01/12(日) 18:10:01.75ID:bIiQ1z8t0377デフォルトの名無しさん (ワッチョイ 5f2c-CCy/)
2020/01/12(日) 18:32:57.05ID:je4+hRX40 そして時は動き出す…!
378デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/12(日) 19:53:41.49ID:VFqe+WSm0 out of memory.
379デフォルトの名無しさん (ワッチョイ dfe7-b6Cp)
2020/01/12(日) 20:13:16.17ID:6g8s1ic00 >>373
GC界隈では普通に使う表現
GC界隈では普通に使う表現
380デフォルトの名無しさん (ワッチョイ dfe5-alJZ)
2020/01/13(月) 00:43:38.40ID:5i4YDTtr0 csvファイルを取り込むため下のようなプログラムを作ったのですが
データに「"1,234",test」のようなカンマ区切りの金額データが含まれるため
「1」「234」「test」のように列が分けられ配列に格納されてしまいます。
「1234」「test」のような形で配列を取得するにはどうしたら良いでしょうか?
static void Main(string[] args)
{
string textFile = @"C:\temp\test.csv";
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");
string[] lines = System.IO.File.ReadAllLines(textFile, enc);
foreach(string line in lines)
{
string[] stArrayData = line.Split(',');
Console.WriteLine(stArrayData);
}
}
データに「"1,234",test」のようなカンマ区切りの金額データが含まれるため
「1」「234」「test」のように列が分けられ配列に格納されてしまいます。
「1234」「test」のような形で配列を取得するにはどうしたら良いでしょうか?
static void Main(string[] args)
{
string textFile = @"C:\temp\test.csv";
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");
string[] lines = System.IO.File.ReadAllLines(textFile, enc);
foreach(string line in lines)
{
string[] stArrayData = line.Split(',');
Console.WriteLine(stArrayData);
}
}
381デフォルトの名無しさん (アウアウイー Sab3-VpI/)
2020/01/13(月) 00:49:22.13ID:3SwxEC/oa nugetでcsvhelper
どうしても自前で車輪の再発明をしなければ気が済まないならTextFieldParserあたり
どうしても自前で車輪の再発明をしなければ気が済まないならTextFieldParserあたり
382デフォルトの名無しさん (ワッチョイ 7fad-UU8b)
2020/01/13(月) 00:50:08.91ID:wNJBXid30383デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/13(月) 00:50:48.38ID:5a7SXLUb0 ダブルクオートの数は論理行内で偶数に
なる事に気がつけば
難しくないよね?
なる事に気がつけば
難しくないよね?
384デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/13(月) 04:40:58.64ID:6QaMEdT10 Ruby なら、CSV モジュールを使うだけ
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
385デフォルトの名無しさん (ワッチョイ ffe3-G18V)
2020/01/13(月) 11:08:21.47ID:0YkcX+ND0 >>384
クォート文字有り無しが混在している時点でCSVじゃねえってことか
クォート文字有り無しが混在している時点でCSVじゃねえってことか
386デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/13(月) 11:21:19.23ID:5a7SXLUb0 元々のCSVはSuperCalc の形式(オズボーン1にバンドルされていた)
今目にするCSVの仕様は、管理工学研究所が定義したK3形式が元になっている
で、実際の処理には何の関係も無い
今目にするCSVの仕様は、管理工学研究所が定義したK3形式が元になっている
で、実際の処理には何の関係も無い
387デフォルトの名無しさん (ブーイモ MM9f-2EI0)
2020/01/13(月) 11:38:13.56ID:IOw3xBOoM CSVという欠陥品はやめてJSONを使おう
JSONならテーブル形式も違和感ない
JSONならテーブル形式も違和感ない
388デフォルトの名無しさん (ワッチョイ 7f59-G18V)
2020/01/13(月) 12:42:50.09ID:DisUSQsY0 丁度いいから聞きたいんだけどjsonのnugetってどれがいいんだ?
ニュートンでいいの?
ニュートンでいいの?
389デフォルトの名無しさん (ワッチョイ 5f63-hsX7)
2020/01/13(月) 13:17:46.09ID:lNXH+eFP0 utf8json
390デフォルトの名無しさん (ワッチョイ dfe5-alJZ)
2020/01/13(月) 16:30:16.82ID:5i4YDTtr0 csvhelperなるものがあるのですね
情報ありがとうございます
ドボンさんの情報は以前は参考にさせて頂いてましたが、
.NET2.0くらいのやり方が多いので、今はより洗練された方法がありそうだなと
思っておりました
情報ありがとうございます
ドボンさんの情報は以前は参考にさせて頂いてましたが、
.NET2.0くらいのやり方が多いので、今はより洗練された方法がありそうだなと
思っておりました
391デフォルトの名無しさん (ワッチョイ 7f2c-DGfv)
2020/01/13(月) 21:40:59.14ID:n3H4xPlw0392384 (ワッチョイ 7f2c-JQ6m)
2020/01/13(月) 22:56:09.48ID:6QaMEdT10 >>385
クォート文字の有り無しは、混在できる
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)・クォート文字(ダブルクォーテーション)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
ただし要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
でも要素内に、それらの特殊文字が無いなら、クォート文字で囲まなくてもよい
クォート文字の有り無しは、混在できる
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)・クォート文字(ダブルクォーテーション)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
ただし要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
でも要素内に、それらの特殊文字が無いなら、クォート文字で囲まなくてもよい
393デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:01:31.99ID:kDbPI+DBa それCSVっていうよりBASIC系のエスケープっぽいねw
そもそもCSVってカチッとした仕様がなかった気がするんだけど
そもそもCSVってカチッとした仕様がなかった気がするんだけど
394デフォルトの名無しさん (ワッチョイ 7f47-uhcM)
2020/01/13(月) 23:06:38.56ID:VhiGJyHM0395デフォルトの名無しさん (ワッチョイ 7f52-4RSc)
2020/01/13(月) 23:18:49.19ID:lfPKL+oG0 >>393
もともとちゃんとした仕様が決まってないままに様々な方言が普及しちゃった後に、後付けでrfc4180が定義されたらしい。
もともとちゃんとした仕様が決まってないままに様々な方言が普及しちゃった後に、後付けでrfc4180が定義されたらしい。
396デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:30:20.68ID:kDbPI+DBa397デフォルトの名無しさん (ワッチョイ 5f17-lB9F)
2020/01/13(月) 23:36:49.28ID:VaOcNYgw0 けっこう色々な種類のcsvファイル触ってきたけどこの定義から外れたもの見たことないから
とりあえずこの通りに実装しとけば問題ないけどね
とりあえずこの通りに実装しとけば問題ないけどね
398デフォルトの名無しさん (ワッチョイ 5f90-mHUb)
2020/01/13(月) 23:37:58.26ID:tegDOPxe0 >>394
そもそもこれstandards trackじゃないし。informationalやん
そもそもこれstandards trackじゃないし。informationalやん
399デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:40:16.54ID:kDbPI+DBa よく見ると冒頭にちゃんと
Category: Informational
と書いてあるね
Category: Informational
と書いてあるね
400デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/14(火) 03:26:39.48ID:3sd16sWN0 Ruby のCSV も、RFC4180
これが標準
これが標準
401デフォルトの名無しさん (ワッチョイ 7f47-uhcM)
2020/01/14(火) 04:05:32.78ID:N3SxpKLV0 ルビーはどうでもいいけどRFC4180が標準だわな
402デフォルトの名無しさん (ワッチョイ df01-eaUz)
2020/01/14(火) 07:09:18.01ID:TfUAOhnl0 今のご時世で新規開発のデータ出力にcsv採用はセンス無いですか?
csv受け取るサブシステムは今の所無いと考えて
csv受け取るサブシステムは今の所無いと考えて
403デフォルトの名無しさん (ワッチョイ dfde-Eq4u)
2020/01/14(火) 07:12:40.24ID:Z55vDhY10 出力した後の運用によるだろ
PGがさわるわけでもないのにxmlで出されても工場のおじさん困っちゃう
PGがさわるわけでもないのにxmlで出されても工場のおじさん困っちゃう
404デフォルトの名無しさん (ワッチョイ 7f01-qx2z)
2020/01/14(火) 07:56:37.29ID:RxBpnTJ90 >>402
例えば時系列の数値データとかだと今でもCSVが最適解のケースが多いと思う
構造が必要なデータとかでないとXMLやjsonはちょっと冗長
まあC#ならライブラリも充実してるからぶっちゃけどうとでもなるけど
例えば時系列の数値データとかだと今でもCSVが最適解のケースが多いと思う
構造が必要なデータとかでないとXMLやjsonはちょっと冗長
まあC#ならライブラリも充実してるからぶっちゃけどうとでもなるけど
405デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/14(火) 09:02:31.67ID:3sd16sWN0 表みたいに、行・列だけの、ネストしない単純な構造物は、CSV がベスト!
一方、構造がネストするものは、JSON, YAML, XML など
一方、構造がネストするものは、JSON, YAML, XML など
406デフォルトの名無しさん (ブーイモ MM0f-rUPC)
2020/01/14(火) 09:18:13.67ID:HiotJy5MM Pandsみたいな優秀なライブラリ誰か作って、オレオレクラス定義すんの面倒になってきた
407デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/14(火) 12:25:10.48ID:1JLYJ3w5a CSVを使う動機は他のプログラムにデータを渡すことでしょ。
例えばエクセル。日本も欧米もエクセルスキー多いからな
閉じたシステムでしか使わないデータのフォーマットなんか何だっていいでしょ。
あえてCSVを使う理由なんかどこにもないと思うけど
例えばエクセル。日本も欧米もエクセルスキー多いからな
閉じたシステムでしか使わないデータのフォーマットなんか何だっていいでしょ。
あえてCSVを使う理由なんかどこにもないと思うけど
408デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/14(火) 12:27:31.80ID:Kx+Dz7Lq0 >>405
否
構造がネストしてたってCSVに入れなければならないときがある
そもそもネストしたぐらいでリストにできないんじゃデータベースにどうやって入れるんだ?
parentid持ってりゃネストしてたって再構築できるだろ
否
構造がネストしてたってCSVに入れなければならないときがある
そもそもネストしたぐらいでリストにできないんじゃデータベースにどうやって入れるんだ?
parentid持ってりゃネストしてたって再構築できるだろ
409デフォルトの名無しさん (ワッチョイ 7f52-4RSc)
2020/01/14(火) 13:05:22.12ID:eL1p+DpS0 まあ、いつものRuby君だからな。
聞き齧った情報を単純化して暗記だけして、関われそうな話題が出るとここぞとばかりに唱え続けるのはいつものこと。
聞き齧った情報を単純化して暗記だけして、関われそうな話題が出るとここぞとばかりに唱え続けるのはいつものこと。
410デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/14(火) 13:09:26.15ID:Cb2SImdL0 CSVで親IDとか使うの?
411デフォルトの名無しさん (ドコグロ MM7f-qx2z)
2020/01/14(火) 13:55:46.20ID:/uoR9pL9M412デフォルトの名無しさん (ドコグロ MM7f-qx2z)
2020/01/14(火) 13:58:11.66ID:/uoR9pL9M413デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/14(火) 14:06:50.32ID:/8RfG7cVM CSVは項目の増減があるとウザいんだよな
もちろんちゃんとヘッダ付けてスキーマが変わった時点でファイルを区切ればいいんだけど、
CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
選べるならJSON Linesの方が好き
もちろんちゃんとヘッダ付けてスキーマが変わった時点でファイルを区切ればいいんだけど、
CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
選べるならJSON Linesの方が好き
414デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/14(火) 14:38:15.52ID:1W0s33Ee0 sqlldrが対応したら考える
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【テレビ】粗品「THE W」バッサリ「おもんない、レベル低い」審査員就任で「日テレが“血の海”に…」 [湛然★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- お前ら「冬のボーナス」なんぼだった?
- 【朗報】井端監督、侍ジャパンで岡本村上の一塁三塁構想を発表WWWWWWWWWWWWWWWWWWWWWWW
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 2025年 プレイステーションが11年連続でPornhubアクセス数No.1に輝く WWWWWWW WWWWWWW WWWWWWW WWWWWWW
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】女性「スタバで癒やされに来たのに、小汚いおっさんがいたあ!!😭」 [769050516]
