[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/03 07:28 / Filesize : 292 KB / Number-of Response : 1049
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part92



1 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:46:53.58 ID:op86qfG/.net]
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467211515/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

756 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 00:19:42.90 ID:wneB9bMR.net]
じゃあ一行で。スレタイ読め。

757 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 04:02:24.71 ID:UZsp8jX5.net]
>>716
せっかくなので教えて欲しい
ちょっと考えたけど、やっぱりMaximumとMinimumがValueの変換中に変わるときとかが結構めんどくさい
あと、オーナードローや継承が安全にできることも必要か

プログレスバーのValueだけどかならともかく、コントロール全部をスレッドセーフにとかは非現実的なんじゃないか?
実際近年やってるところは少し調べた限り無いし

758 名前:デフォルトの名無しさん [2017/03/27(月) 04:51:00.01 ID:FSqhbRGK.net]
>>714
誰も触れてくれなくて草

759 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 05:02:30.31 ID:rNkb8v7V.net]
>>723
>>700 に言えよ w

760 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 14:11:21.66 ID:H4MLQPNT.net]
>>725
まあ正直今時Rxかよwwwwww
と草生えるからな
保守案件かも知らんが御愁傷様だ

761 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 15:09:08.98 ID:OggmZorO.net]
そもそもRxって今は.NETの一部じゃなくてサード扱いだからな
知ってるのが当然みたいに言われても困る
.NET Fx以外の個別のライブラリについてはスレ違い

762 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 22:59:41.60 ID:ty5ByWfa.net]
>>690
スタティックおじさんって誰よ?

763 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:14:42.86 ID:53TkDvRN.net]
スタティックジジバンドのリーダーだよ
知らなかったのか

764 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:28:21.19 ID:c1Kh3EUH.net]
もう今ならスタティックの悪い使い方を知ってるほうがおじさんな気がする……



765 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:52:27.87 ID:dYBhOZra.net]
性的

766 名前:デフォルトの名無しさん [2017/03/28(火) 07:20:39.72 ID:1WRXezaS.net]
>>712
不二痛のノンプログラミングツールの
販促で 銀の弾丸を求めて とか
書いてあったの思い出した

あんな大手企業がスゲー認識してるなと思った

767 名前:デフォルトの名無しさん [2017/03/28(火) 08:08:28.90 ID:W2JaqSVc.net]
ラズパイでMVCのwebアプリって動かせますか?

768 名前:デフォルトの名無しさん mailto:sage [2017/03/28(火) 16:32:12.10 ID:WR7Bj+dr.net]
Windowsがまともに動きゃ動くだろ

769 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 00:54:43.35 ID:8DsEMtOy.net]
.NET CoreならWindowsじゃなくても動くんじゃね

770 名前:デフォルトの名無しさん [2017/03/30(木) 01:35:10.25 ID:DtnWdi8P.net]
ARMで動くのか?

771 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 01:58:32.69 ID:Qg6ZUcGU.net]
Formのコントロールのイベントに紐づけしたFormのメソッドって
Formが閉じられた後も紐づけしたままだとお漏らしになるんだっけ?

772 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 02:50:16.54 ID:DVY8Bk9i.net]
>>737
動くよ、ググってみ

773 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 06:49:49.86 ID:U97Tvha+.net]
>>738
ならない

774 名前:デフォルトの名無しさん [2017/03/31(金) 09:35:08.92 ID:YcsHI68o.net]
UI AutomationでVB6で書かれたレガシーなアプリのUIテストをしたいのですが、
操作したいコントロールの多くに一意のAutomatinIDが割り当てられていません。多くのコントロールのIDが1や2になっています。
一応、コントロールの順番が変わらないものと決め打ちして操作したいコントロールを特定することは可能なのですが、不便です。
もっとうまいやり方ってありますか?
後は表示位置を元に特定するくらいしか思いつかないのですが。

AutomationIDって、少なくともVB6では自分で設定できないのでしょうか。
一応このレガシーアプリのソースコードはあり、編集も可能なのですが、
AutomationIDというのを設定するところは見当たりません。



775 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 14:28:02.89 ID:gIiQslt6.net]
スレチ

776 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:34:04.77 ID:BtloYTx6.net]
ASP.NET MVCなんですが

DBに処理対象データがあるか確認
__ある場合:メッセージボックス(*件処理します。処理を続けますか?)
____はいの場合:データ更新処理
____いいえの場合:なにもしない
__ない場合:メッセージボックス(データがありません)

こういう処理を非同期リクエストを使わずに実装したいのですがどうすればいいでしょうか
入力フォームの内容もクリアされないようにしたいです

777 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:36:51.55 ID:kI20EOUu.net]
簡単だよ

778 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 20:45:16.64 ID:BtloYTx6.net]
>>744
教えてください
お願いします!

779 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 21:59:00.75 ID:wAJQEnGm.net]
なぜそんなことを他人に聞かないとわからないのかわからない。

780 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:08:53.88 ID:PPRsLJ2Y.net]
>>740
遅くなったけどありがとう
やっぱりそうか

781 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:10:11.37 ID:9w4qNkVe.net]
>>743
正直おまえキモイ

782 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:38:20.66 ID:BKtRT3pJ.net]
>>743
フォームの入力内容を書き戻すのに加えて、確認中であることを示す値を入れたhiddenフィールドと
$(function() { if (confirm(msg)) $("#form").submit(); });
みたいなスタートアップのスクリプトを仕込んで返せばいいんじゃないの
俺ならこんな汚物を出してきたら差し戻してAJAXで書き直させるけど

783 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 19:08:34.68 ID:iJwskPQ3.net]
while(true)
{
Console.Out.WriteLine("氏ね");
}

784 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 19:15:59.90 ID:4r7Zvrb2.net]
標準出力とか久々に見たわ



785 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 13:09:41.47 ID:sZC7W3vJ.net]
aspでviewだけをデザイナーに触らせたいんだけどどうすればいいの?
view以外(controllerとか)のソースを弄られたくないし見せたくもない

786 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 13:48:10.33 ID:YcnJ2dMt.net]
フォルダにアクセス権限でも付けとけや
スレ違い

787 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 14:12:13.73 ID:sZC7W3vJ.net]
こういうプロジェクトの共有(共同開発)は出来ないのですか?

788 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 14:18:51.99 ID:G0J69e58.net]
普通にできるが

789 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 15:39:57.58 ID:sZC7W3vJ.net]
普通にはできませんでした

790 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:12:16.74 ID:zJguOVHN.net]
>>752
それならREST APIで良いんじゃないか
RazorというかサーバーサイドのHTMLテンプレートはもう時代遅れだから思い切って捨ててしまえ

791 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 20:15:16.37 ID:YcnJ2dMt.net]
WebAPIを使った動的ページの開発ができる有能なデザイナならソース隠す必要ないだろ
むしろバックエンドも含めて全部そいつ一人に作らせた方が早いんじゃないか

792 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 20:38:02.81 ID:DvppQH2R.net]
わろたw
ビューのソースファイルだけ渡してデバッグできない状態で作らせるか
テンプレート関連の読み込み処理を自前にするしかないだろうな
もともとc#のtemplate使ってるから自前もわりと簡単だよ

793 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 22:10:44.51 ID:zJguOVHN.net]
冷静になって考えるとモックコントローラー作るだけだったわ

794 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 23:45:38.38 ID:f9LqqWjR.net]
バイト配列を並列で0クリアしようと思ったんだが、なんかほぼ変わらない
なにか間違ってるんだろうか?

public static void Main()
{
var methods = new Action<byte[]>[] { ArrayClear, ConcurrentClear };
for (var i = 0; i < 5; i++)
foreach (var method in methods)
{
var sw = Stopwatch.StartNew();
var buffer = new byte[64 * 1024 * 1024];
var random = new Random(0);
random.NextBytes(buffer);
method(buffer);
Console.WriteLine(method.GetMethodInfo().Name + ": " + sw.ElapsedMilliseconds);
}
}

private static void ArrayClear(byte[] buffer)
{ Array.Clear(buffer, 0, buffer.Length); }

private static void ConcurrentClear(byte[] buffer)
{ var t0 = Task.Run(() => Array.Clear(buffer, 0, buffer.Length / 2));
var t1 = Task.Run(() => Array.Clear(buffer, buffer.Length / 2, buffer.Length / 2));
Task.WaitAll(t0, t1); }



795 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 23:59:42.35 ID:WDRtNXIn.net]
>>761
なんでそんなクソ遠回りなことやってんのか知らんが
Taskでパラレルやるなら引数渡せ

796 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 00:22:54.01 ID:QhQPiH2H.net]
>>761
少し考え違いをしていると思う、並列処理は分割すればするだけ速くなるような代物じゃないし
粒度が細かすぎる、Taskは並列というより並行処理向け。同配列に対する処理などはCPUよりGPGPU向き
―だがそれより何より

797 名前:、その計測された時間のほとんどは配列生成と乱数格納に費やした時間だ []
[ここ壊れてます]

798 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 00:52:15.63 ID:PvBuykCK.net]
毎度思うけど命令口調のバカ何なのかねw

799 名前:761 mailto:sage [2017/04/12(水) 02:52:03.74 ID:E1U6B9R0.net]
>>762
Parallel 使えってことかな?

>>763
あ、乱数生成の時間まで入れてたのか
でも乱数生成分入れないようにしても、どっちも同じような時間なのは変わらない

バイト配列キャッシュ作ってるんだけど、1GBぐらいの超巨大配列の初期化に
Task の生成や切り替えに数msec使っても、効果があると思ったんだ

分割すればするほど速くなるとは思ってないけど、
2分割程度なら速くなって当然と思ってるんだけど

800 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 03:38:43.21 ID:QhQPiH2H.net]
>>765
オーバーヘッドはご存じか、C#の場合はネイティブスレッドのそれほどでも無いだろうけど
ただ…結局この場合だと演算が皆無でメモリストアに割食って無意味って所だろうか(範囲が被るほど速い

801 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 06:57:20.84 ID:uWep8obc.net]
メモリーアクセスがボトルネックになってるだけじゃねーの?

802 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 07:57:27.76 ID:A6XRqe5e.net]
常識的に考えて、ボトルネックはNextBytesじゃないかなw

803 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 11:23:50.73 ID:E1U6B9R0.net]
>>766, 767
なるほどメモリアクセスかー

Taskの切り替えや待ち時間などのオーバーヘッドはご存知よ
書いたとおり、Taskをふたつ待つ程度のオーバーヘッドは数msec

NextBytesを計測から外し、1GBで0クリアを試してみたら、150msec前後かかった
レートだと 6700MB/sec ぐらい
実行環境は DDR3-1333 なんだけど、理論値 10667MB/sec
途中GC入ってたし、こんなもんかー

804 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 11:40:08.42 ID:7YKbJJVc.net]
byte(IntPtrじゃない)の配列のアクセスでそんなにHWの理論値に近い数字が
出る訳ないと思うよw

っていうか理論値はあくまで純粋にHWの転送能力であってCPUが介在する場合は
そんな値絶対出ないし

測定値、計算のどちらかまたは両方が間違いなく間違ってるw



805 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 12:09:07.27 ID:E1U6B9R0.net]
>> 770
Array.Clear() って .NET Core の内部ではポインタ幅(64bit?)で0クリアしてたよ
端っこはバイト単位での0クリアだったけど

// now write pointer sized pieces
size_t nPtrs = (endBytes - memBytes) / sizeof(PTR_PTR_VOID);
PTR_PTR_VOID memPtr = (PTR_PTR_VOID) memBytes;
for (size_t i = 0; i < nPtrs; i++)
*memPtr++ = 0;

GC発生しないようにバッファ使い回してみたら、7000〜8000MB/sec くらいだった
理論値でるとも言ってないし、7〜8割なら測定値、計算ともに妥当じゃない?

806 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 13:46:41.47 ID:PeioJu3J.net]
(byte配列ならnewした時点で既定値(則ち0)で埋められてるだろ、と言ったらあかんのか?)

807 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 14:05:20.61 ID:OIzgc8H/.net]
>>772
そりゃ実験のためのコードだからね
何のためにこんなこと試すのかわかんないけど

808 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 14:11:16.09 ID:E1U6B9R0.net]
>>772
LOH(約85000バイト以上のオブジェクト)は仮想メモリ空間のフラグメンテーションを発生させるので、
OutOfMemoryException が発生しやすくなる

巨大バッファをガンガン使いまわすアプリは OOMを防ぐため、
バッファをキャッシュして使いまわす必要があったのね

んで、キャッシュしてたバッファを使うときに高速

809 名前:ノ0クリアしたいってのが、今回の大元でした []
[ここ壊れてます]

810 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 18:50:16.39 ID:IE9Tc5o9.net]
配列のメモリークリアみたいな物はマルチスレッド化しても高速化しないだろうね
原理的にサイズが大きくても高速化しないと思われる

811 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:03:44.50 ID:0XMPUeTg.net]
15年前のシングルコアのプロセッサーが当たり前の時代ならその通りだけど、
今日的にはそんなこともないんじゃないの?

たとえ物理メモリーは排他的にしかアクセスできない制約があるにしろ、
並列化の効用がまったくないとも思えん

812 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:08:41.74 ID:giyYheDf.net]
むしろCPUキャッシュに左右されんじゃねのか
環境でばらつきまくって計測の意味もなさげ

813 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:51:51.86 ID:QhQPiH2H.net]
とりあえずWindowsマシン@4.6.2で色々試してみたら

[SuppressUnmanagedCodeSecurity, DllImport("kernel32")]
extern static void ZeroMemory(byte[] Destination, IntPtr Length);

[SuppressUnmanagedCodeSecurity, DllImport("msvcrt", CallingConvention = CallingConvention.Cdecl)]
extern static void memset(byte[] _Dst, int _Val, IntPtr _Size);

とかした方が雀の涙ほど速かった、CILだと

ldarg.0
ldc.i4.0
ldelema uint8
ldc.i4.0
ldarg.0
ldlen
initblk

あたりで漸く同等、しかも64bitに限った話、32bitだとどれも誤差レベル

814 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:18:24.58 ID:u533e0uw.net]
>>776
ほとんどメモリーアクセスしかないのに高速化できるわけないだろ



815 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:45:31.51 ID:0XMPUeTg.net]
>>779
高級言語のコード上はそうでもCPUの実際の動作はそうじゃないよw

816 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:56:27.84 ID:5KMe1hi6.net]
どう動いてるんだ?

817 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 23:32:44.30 ID:7AJloho+.net]
>>780
はあ?
メモリーアクセス以外のどんな動作があるんだよ w

818 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 23:49:21.06 ID:fn4L3E2o.net]
仕組み判らないけどメモリをキャッシュしてる場合
同じキャッシュ単位内に同時に書き込みできるものなのか?

819 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:14:45.08 ID:Vv6BlwOK.net]
使うときに必要な分だけ0クリアじゃだめなんか?大量にバッファを0クリアする場面が思い付かん。

820 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:38:14.37 ID:px7lD0L1.net]
>>782
DMAでも使ってない限り、少なくともポインタのインクリメントとループの終了条件のチェックは入る

821 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:57:14.48 ID:G9tlFT6D.net]
>>785
x86にはストリング命令というチートが有ってだな

822 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:07:16.95 ID:px7lD0L1.net]
あ、ポインタは自動インクリメント付きの命令が使えるかも

823 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:22:49.09 ID:sVC5qkLg.net]
>>784
つ GC

>>783
Core i7 2600 4Core Sandy Bridge とかだと、CPU-Z とかのツールで見てみると
L3 キャッシュまで搭載していて、
・L2 は 256KB が 4コア分
・L3 は 8MBひとつ
なので、L2間でコア間のキャッシュコヒーレンシ(一貫性)を解決してるはず
キャッシュライン(64Byte)ごとに他のコアで書き込みがあるかとかをチェックしてる

同時の書き込みもちゃんと検知されている
キャッシュラインで競合すると書き戻しとかが発生するので、
重ならないようにするのがいいらしい

824 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:23:52.75 ID:DHabuNl5.net]
そもそもrep stosb云々とか以前に、命令のクロックサイクルなんかより
メモリレイテンシがデカすぎて取るに足らないって事よ、コヒーレンシの実装にも左右されそうだし
1つのバカでかいバッファより、バッファ自体を分割したほうが良いんでないか



825 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:44:29.44 ID:G9tlFT6D.net]
スレッドをいくつ作ろうが、単純な0クリアだからキャッシュ内のメモリーを処理する速度がキャッシュとメモリーの転送速度より早くなり
CPUはキャッシュが満たされるのを待つ必要があるから頭打ちになるってことかね

826 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 03:28:18.29 ID:NHsAQDrp.net]
WinFormsはif文やっと覚えましたってレベルでも
有名なサイトのコピペで目的のもの作れたが
WPFはデリゲートや非同期を熟知してないと一歩も進めない感じ
コピペしたくても自由度が高く手法が多すぎて無理

827 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 05:44:30.50 ID:FNNFGlTu.net]
今のCPUなら1CPUでも、連続0書き込みなんかしたらメモリーの速度を圧倒してしまうからな
マルチスレッドなんかにしたら、そのオーバーヘッドが邪魔してかえって遅くなるだろう

828 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:14:59.28 ID:wfOumNdE.net]
CPUの実際の動作がさっぱりわからん

829 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:22:05.68 ID:vvMMmk8r.net]
気にしなくていい

830 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:53:09.50 ID:DSZn496T.net]
>>785
おっさんいつの知識で語ってるんだよ w
そんなもん主記憶への書き込みに比べたらゴミにしかならんぞ

831 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 07:19:52.20 ID:FNNFGlTu.net]
>>793
CPUというよりも、CPUとメモリーのスピード差が決定的すぎるんだよ
メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る
余りに待ちが長いので、その間に色々計算ができるようにCPUには工夫が入っていたり
マルチCPUにして、別のCPUが計算している間に書き込んでしまえといった方面で創意工夫がされているんだ。
境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして
書き込みスレッドは一本にして、他のCPUは別のメモリーアクセス以外の仕事ができるように開けておいた方がトータル良い結果を出すって事。

832 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 08:39:19.14 ID:2TLG8dmE.net]
どうでも良いが、メモリーに書き込まないスレッドとかありえないと思うんだ・・・

833 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 10:17:04.48 ID:xhr4sxE5.net]
本当に小規模な計算ら、レジスタだけで解決できるだろう

834 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:14:58.98 ID:mVrmFNTT.net]
C++ならともかくC#で気にする必要のあることなんだろうか



835 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:31:22.91 ID:FNNFGlTu.net]
>>799
知っていれば無意味な並列化とかしなくて済むだろ
そうすればソースも分かりやすくすっきりするし
0フィル処理なんて詰まらない処理なら、効果はてきめんだ。

836 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:43:29.67 ID:xhr4sxE5.net]
無意味な並列化にかかる工数と、無意味な並列化は逆効果ということを検証する工数
どちらがよりコストがかかるんだろうか。

837 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:49:55.01 ID:FNNFGlTu.net]
高速化目的で並列化しなきゃならない程の状況なら、検証はするだろ。
で、並列化するときにどういう方向性が効果的かってのを知っておくことは
コードを手早く書く上での基本テクニックだよ
無意味なコードは、そもそも書かないし試さないというショートカットができるからね。
将棋の名人でもすべての手を読んでいる訳じゃない、効果的な枝だけを深読みしているみたいなもんだ。

838 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 14:09:41.46 ID:xhr4sxE5.net]
並列化をしたくなるのは、代替がそういう状況に陥る前の段階での思いつきなんだよねたとえば今回の0フィルとか。

839 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 16:09:48.66 ID:aK+zC0HQ.net]
並列化の基本はいかに粒度を上げるかだよ
極端な話、プロセスを2つに増やして2倍速くなるならそれでいい
ミクロな視点で考えるのはほとんどのケースにおいて時間の無駄

840 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 16:28:44.49 ID:FNNFGlTu.net]
>>803
こういうのってコンピュータの仕組みが分かってしまえば、高速化手法として頭に浮かぶことすらないですから。
考えるまでもなく除外なんですよ、脊髄反射。
よく似た物にページングのチューンなんかがあるね。
並列化したら、ずっと仮想メモリにページアウトページインばっかりするようになってしまうのが見え見えのコードとかね。
こういうケースが見えて居る時にマクロ視点でプロセス増やして・・・と考えることは無いねw

841 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:05:14.12 ID:sVC5qkLg.net]
>>805
コンピュータの仕組みなんて常に変わっていくもの
脊髄反射で手法を除外するのはよくない

あと一レス目で指摘するならともかく、問題点が整理されてから
後出しで手法をダメ出しするのはカッコ悪い

842 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:18:41.10 ID:xmE6C1ua.net]
>>796
それってCPUの実際の動作じゃなくて単なる考え方だよね・・・

843 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:34:37.22 ID:2TLG8dmE.net]
と、言うより>>796は思いっきり出鱈目ですわ
境界チェック云々はマルチCPUじゃなくてパイプラインで解決されるからプログラミング要らずだし

844 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 19:49:41.71 ID:woBc/tdN.net]
>>79
> メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る
今時のメモリー(主記憶)のレイテンシーって10ns以下だと思うが10nsで1,000命令も実行できるCPU教えてくれ



845 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 20:53:44.12 ID:FNNFGlTu.net]
>>808
まぁ、その手の事を指摘したつもりだけれどそう読んではくれないみたいだね。
あと、最近のはパイプライン以外にも命令の並べ替えやら入っているからw

ホコポコ無意味に返信している内容は、多分自演なんだろうけど、そろそろやめたら。
こういうのはゲーム作ったことあるような人間なら常識の範囲なので、考えるまでもないような話の類。
俺以外のヤツもたくさん指摘しているが、それだけ普通に知っている人は多い話なのだよ。

846 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:04:00.56 ID:1tPgrneG.net]
いつの時代のどのハードのゲームだよ
アセンブラのバイトコード気にするとか20年前の話だろ

いっぽかたが計算してる間に他のCPUで書き込みするのは
同時にメモリに書き込もうとして競合するのを避けるためじゃないん

847 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:15:04.20 ID:FNNFGlTu.net]
しつこいねぇ
この手の話をゲーム屋が知ってるのは、何かの本で読んだとかではなくて
ソニーとか任天堂とかマイクロソフトとか今は逝ってしまっているセガとかハード屋が
セミナーで現在のハードの状況と止めた方が良いコードなんかのヒントとして教えてくれるからなんだよ。
その知識を持って、インテルの資料とかを読めば大体の事は分かるんよ。
もちろん素から勉強している人も居るだろうけどね。

今回の話はマシン語ではなく、最近のメモリー事情の話なんだよ。
連続アドレスの書き込みor読み出しには強いが、飛び飛びのアドレスにアクセスすると弱いダイナミックメモリー事情とかの話。
メモリフィルとか連続アドレスをアクセスしているのに、わざわざ壊すようなマルチスレッドはそういう点でも駄目なんだな。
決定的にはメモリーが遅いという点に尽きるが。
こんな風に駄目な理由に一つ以上のネタがあるんだよ、だからやるまでもないの。

848 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:29:31.37 ID:1tPgrneG.net]
ほんとに理解してるか?
パイプラインで境界チェックを解決って意味が分からん
どうやってんの

849 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:32:07.91 ID:3oML3qao.net]
そろそろ死ねよチンカス勢
これ以上口を聞くとスレを埋めるぞ

850 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:46:56.27 ID:2TLG8dmE.net]
>>813
パイプラインがRISC時代に進化して、レジスタが干渉しなければインストラクションを同時実行するようになったから
件の例だとメモリクリアと境界チェックを同時にヤるんだわ
だから一つのCPUは見かけ上メモリクリアを境界チェックの時間0で延々と実行する

コレを実行するのは一つのCPUだし、同時実行に人が介在すること

851 名前:無いのでプログラマーは何もヤることはありません
ホント>>796は酷い出鱈目ですわ
[]
[ここ壊れてます]

852 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 22:00:11.37 ID:oixKZUzL.net]
何を争ってるのかさっぱりわからんw
ただ昨日書いた>>776が間違ってることはよくわかった。
よく考えればこれ486の時代とかでも当たり前だw
すまんかった

853 名前:デフォルトの名無しさん [2017/04/13(木) 22:00:58.20 ID:FNNFGlTu.net]
>>815
>境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして
これがパイプラインやらディレイスロットに相当する話として描いたんだよ
計算時間隠ぺいはパイプラインだけじゃないからな、不正確になるだろ。

854 名前:デフォルトの名無しさん [2017/04/13(木) 22:08:08.05 ID:FNNFGlTu.net]
ちなみに昨今のCPUは、機械語命令を別の内部用の命令に一旦変換することで互換を取っている
この変換で色々な隠ぺい処理がされる。
パイプラインの直接関与は無い。



855 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 22:55:07.48 ID:UJp3daw4.net]
そういうのはC++使いにやらせとけ

856 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 23:32:52.23 ID:ZueE7S//.net]
CPUの種類もいっぱいあるし実装すらmonoとかあるんだから考えても無駄だよ
ふつーにヤレ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef