下のary1をary2で上書きし結果が
{ 4, 5, 3 }
となるようにしたいです。
c#
1int?[] ary1 = new int?[] { 1, 2, 3 }; 2int?[] ary2 = new int?[] { 4, 5, null };
ループさせるしか方法は無いでしょうか?
実際は四次元配列で1000100010*100くらいの配列を扱うので負荷がかかり
ループさせずに上書きする方法でパフォーマンスを向上させるのが目的です。
> ループさせるしか方法は無いでしょうか?
はい。その前提条件が動かせないならそうなります。アルゴリズムを見直して前提条件を変えてください。
「はじめからそういう配列を作る」は難しいのでしょうか。確固たる規則性がない限りは負荷関係なく地道にやるしかないです
nulll判定が必要ならループさせるしかないでしょうね。
単純なコピーであれば、Buffer.MemoryCopyやUnsafe.CopyBlockUnalignedの採用の余地があります。
まあ何となくこれと同じ人じゃないかなとは思いますが。
https://teratail.com/questions/323968
>Zuishinさん
本ユーザーは、私とは無関係です。
null許容型はメモリ効率が悪いからint型にしてnullの代わりに
マイナスを使ってない場合は、-1
使っている場合はint.MinValue
とかを使うとだいぶマシになるはず。
>hihijijiさん
なるほど、少しでも効率的にできるご回答ありがたいです。
ベストアンサーにしたいので回答欄に書いていただけますか?
潜伏期間中なので自己解決でお願いしますm(_ _)m
それと、どのぐらい改善されたかを書いてくれると後進に有益な情報になります。
私も知りたいですし
>hihijijiさん
わかりました。明らかに改善された結果が出たら書きますね。
並列処理が可能なので、条件によっては GPU を使って速くできます。
あなたの回答
tips
プレビュー