[過去ログ] C#, C♯, C#相談室 Part93©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb) [sageteoff] 2017/04/22(土)08:52 ID:iVvswOrb0(1/2) AAS
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
外部リンク:www.visualstudio.com

■コードを貼る場合はこちら
外部リンク:ideone.com

■前スレ
C#, C♯, C#相談室 Part92
2chスレ:tech

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
876: (ワッチョイ a7da-MZ+k) 2019/02/14(木)22:45 ID:tlcLfILV0(1) AAS
テンプレート系はデータが増えればC++にでも勝てるのに
何が問題?
877
(1): (ワッチョイ bf90-pQCL) 2019/02/15(金)00:22 ID:dIP2EtTm0(1) AAS
Collection系はJavaの方がしっかりしてるよね。
878: (ワッチョイ 7f63-v083) 2019/02/15(金)00:39 ID:2WeUN81J0(1) AAS
>>877
Javaは何が違うん?
879: (アウアウエー Sa1f-x6Gg) 2019/02/15(金)03:04 ID:l1U6kYAka(1) AAS
Queue以外は不満持ったことないね
880: (ラクッペ MM3b-dufs) 2019/02/15(金)21:54 ID:kAPwBxa3M(1) AAS
queueは空っぽの時取り出そうとすると落ちやがるの許せん勝田
今はTryあるからいいけど
881: (アウアウカー Sa5b-KHu+) 2019/02/15(金)22:47 ID:izkrr7dEa(1) AAS
いやチェックしとけよそこは
882: (ワッチョイ 5f01-3Kdw) 2019/02/16(土)08:41 ID:q1DAaOKG0(1/3) AAS
例外が発生することを落ちるって表現する男の人って…
883
(2): (ワッチョイ c701-cT+3) 2019/02/16(土)10:36 ID:8cj+4+Hl0(1/2) AAS
例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
とりあえずcatch(Exception e)とかしちゃってるけど本来はこんなのダメだよな……
884: (ワッチョイ 87f2-yQ/S) 2019/02/16(土)11:09 ID:mveZudXk0(1/2) AAS
別にいいと思うぞ。下位の呼び出しのどこかで失敗したということに対して適切に処置するなら。
885: (ワッチョイ a761-yQ/S) 2019/02/16(土)12:03 ID:mmBt6tnL0(1) AAS
>>883
例外は握りつぶしてこそ華
886: (ワッチョイ 47e3-yQ/S) 2019/02/16(土)12:43 ID:LCZTEEhT0(1) AAS
catch(Exception e){
887
(1): (ワッチョイ 5f01-3Kdw) 2019/02/16(土)13:08 ID:q1DAaOKG0(2/3) AAS
>>883
> 例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
投げる方で悩むのはわかるけど
> とりあえずcatch(Exception e)とかしちゃってる
受ける方はどれ受けるべきかはわかってるでしょ
最終手段としてよくわからんけどエラーが発生したから終了するね
って言うならcatch(Exception e)もありだと思うが
888
(1): (ワッチョイ 87f2-yQ/S) 2019/02/16(土)13:37 ID:mveZudXk0(2/2) AAS
終了というのがプログラムの終了のことなら逆にcatchしちゃだめだろう。
889
(2): (ワッチョイ 7f7b-uWgP) 2019/02/16(土)14:43 ID:NIO8UzEI0(1) AAS
>>887
catch { }ではw
>>888
例外一つでプログラム終了していたら大概困るw
890: (ワッチョイ 7f63-v083) 2019/02/16(土)15:01 ID:NEtPpdWW0(1) AAS
例外はありえない事態なんだからプログラム終了しなきゃまずいだろう
891
(1): (アウアウエー Sa1f-x6Gg) 2019/02/16(土)15:02 ID:PR5Tb5Rba(1/2) AAS
>>889
それは逆で、プログラマが想定してない例外が発生したら
プログラムは停止してもらわないと困る。これが正しい考え方。

そもそも例外機構というのはそのためにある
892
(2): (オイコラミネオ MMdb-XSOg) 2019/02/16(土)15:03 ID:uy2P96bkM(1/3) AAS
最近部活の後輩が黒魔術みたいなコードを書くようになって困ってるんだが対策ない?

こんな感じのコードを後輩が書いてくるんだよ↓

public interface IMessenger {
__public MessageReceived();
}
public abstract class Messenger : IMessenger{
__public abstract void MessageReceived();
__public abstract void Retry();
}
893: (オイコラミネオ MMdb-XSOg) 2019/02/16(土)15:04 ID:uy2P96bkM(2/3) AAS
public class Mail : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Alarm : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Communication {
__public void SendMessage(IMesssenger message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage() as IMessage;
____received?.MessageReceived();
__}
}
894: (オイコラミネオ MMdb-XSOg) 2019/02/16(土)15:04 ID:uy2P96bkM(3/3) AAS
こんなんだったから

public class Communication{
__public void SendMessage(string message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage();
______switch(received.First()){
_______case "0":
_________MailEvent(received);
_________break;
_______case "1":
_________AlermEvent(received);
_________break
____}
__}
}

こんな感じで書くように矯正しといた
CSVで2文字で分けるって言ってるんだから
何が起こってるかわかるように書くことを意識してもらわないと
895: (ワッチョイ c701-cT+3) 2019/02/16(土)15:06 ID:8cj+4+Hl0(2/2) AAS
まあ例外でプログラムは終了させるべきだよな
ただ客は例外が起きてもcatchで握りつぶしてスルーした方が文句言わないんだよな……
896: (アウアウウー Sa4b-mBMX) 2019/02/16(土)15:14 ID:auHH3gBua(1) AAS
>>892
酷いな
MediatoRを使うようにアドバイスしてあげなよ
897: (アウアウエー Sa1f-x6Gg) 2019/02/16(土)15:19 ID:PR5Tb5Rba(2/2) AAS
>>892
2chのシステムは先頭の半角スーペースは除去するけど全角スペースは除去しない。
だから字下げは後者で
898: (ワッチョイ 5f01-3Kdw) 2019/02/16(土)15:41 ID:q1DAaOKG0(3/3) AAS
>>889
> catch { }ではw
ごめん、何を言いたいのかわかん
処理部分も当然必要だけど何を受けるかの話だから(Exception e)の方が重要だろ?
899: (ワッチョイ ff79-dufs) 2019/02/16(土)22:53 ID:gbHoDgK/0(1) AAS
>>891
ちょっとMSに例外じゃなくエラーコード戻す設計にするようお前から言ってきてくんね?
W32APIはそうなってんのにFrameworkの方そうなってないじゃん
900: (ワッチョイ a7da-MZ+k) 2019/02/17(日)00:48 ID:0sFVNd3o0(1) AAS
宗教戦争を見物now
901: (ワッチョイ 7fa7-cT+3) 2019/02/17(日)14:42 ID:QIeMqQFm0(1/5) AAS
byte*からbyte[]にする方法ってない?
new byte[64];みたいに新規確保してコピーしか方法ないんだろうか
Unsafe.As等で新規確保無しで出来るかと思って色々試してみたけど上手くいかない
902
(1): (アウアウエー Sa1f-x6Gg) 2019/02/17(日)15:01 ID:99sHKv96a(1) AAS
「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
全然別の型なんだしあるわけないでしょう。
そういう危なっかしい機能を排除してるのがC#の売りの一つだったはずなわけで

コピーする機能ならMarshalあたりにあるんじゃない?
903
(1): (ワッチョイ 7fa7-cT+3) 2019/02/17(日)15:16 ID:QIeMqQFm0(2/5) AAS
>>902
>「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
そういうことです

あるわけないと言いますが、その逆はあるので出来るかなと思い
(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
904
(1): (ワッチョイ 275f-8zyB) 2019/02/17(日)15:21 ID:Ox4HquXb0(1) AAS
>>903
>(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
具体的なコード希望
905: (ワッチョイ a70c-yQ/S) 2019/02/17(日)15:23 ID:UNDanSNQ0(1) AAS
その逆がマネージドじゃ難しいからね
無理じゃないかなあ

やっぱこれからはSpanですよスパンスパン
906: (ワッチョイ 7fa7-cT+3) 2019/02/17(日)15:27 ID:QIeMqQFm0(3/5) AAS
>>904
public struct MyStruct { public int Value1, Value2, Value3, Value4 };
byte[] data = new byte[16] { 1,0,0,0, 2,0,0,0, 3,0,0,0, 4,0,0,0 };
ref var myStruct = ref Unsafe.As<byte, MyStruct>(ref data[0]);
これでmyStruct .Value1は1、myStruct .Value2は2, myStruct .Value3は3, myStruct .Value4は4と余計なコピー無しに直接読み書きできる

byte[]からclassの場合はFieldOffset指定して各フィールドを4バイト後ろにづらないと出来ないから実用は難しいけど一応可能
907: (ワッチョイ 7fa7-cT+3) 2019/02/17(日)15:31 ID:QIeMqQFm0(4/5) AAS
fixed (byte* ptr = &data[0]) *(MyStruct*)ptr;
と大体同じではあります
908: (ワッチョイ 7fa7-cT+3) 2019/02/17(日)15:40 ID:QIeMqQFm0(5/5) AAS
やっぱりこういうことやりたければC++に池ってことなのでしょうか
記憶力悪いのでVSがC#ほど助けてくれないC++に行くのは億劫なため質問させてもらいました
909: (アウアウウー Sa4b-dufs) 2019/02/17(日)16:16 ID:rf6p5Xt1a(1) AAS
Span使え
910: (ワッチョイ df32-A2tD) 2019/02/17(日)16:27 ID:tKx1WgvG0(1) AAS
byte[]も参照型だからね、オブジェクトヘッダが付いてなければ扱えない
Span<T>でなければ、具体的なシナリオにも依るけど元からbyte[]で作って
TypeHandleとlengthのsizeof(IntPtr)*2分ずらした所を使い回す方が賢明
結局fiexdと一緒な訳だが、P/Invokeならbyte[]渡してもゼロコピーの筈だし

abstract class Union<T> where T : struct {
internal readonly IntPtr length;
public T Value;
}
みたいなオレオレ実装をILキャストした事もあったな…後はSafeBufferとか
911
(1): (アウアウウー Sa21-eq4B) 2019/02/21(木)12:35 ID:78/oBfjca(1) AAS
self containedって完全に依存なしになるわけじゃないのね
alpine用にself containedでビルドしても動かなかった
libstdc++とか色々インストールしたら動いたけどさ
dotnetコマンド同梱と比較してコンテナサイズも殆ど変わらないし意味あるのかなこれ
912: (スップ Sd0a-5Ibu) 2019/02/21(木)12:44 ID:IWeqLQBdd(1/3) AAS
>>911
おばか
913
(1): (ササクッテロレ Spbd-zZPo) 2019/02/21(木)14:33 ID:XSMrGlqdp(1) AAS
SCDは.NETのランタイムを別途インストールじゃなくて同梱するってだけの話だしね
公式ドキュメントにも注釈あるけどLinuxは仕様上完全に断ち切るのは難しいんじゃない?
Windowsだと同梱のファイルだけでそのまま動くけど
914: (アウアウウー Sa21-eq4B) 2019/02/21(木)17:41 ID:DKuxuLxMa(1/2) AAS
>>913
Windows配布用と割り切った方がいいのかもしれない
Linuxだと管理下のサーバーかコンテナが多いからSCに拘る必要もない
915: (スップ Sd0a-5Ibu) 2019/02/21(木)18:56 ID:IWeqLQBdd(2/3) AAS
最近のバッチはみんなSCDにしてる
らくちんらくちん
916
(1): (アウアウウー Sa21-eq4B) 2019/02/21(木)19:03 ID:DKuxuLxMa(2/2) AAS
Goのように1バイナリにはならんものかね
917: (スップ Sd0a-5Ibu) 2019/02/21(木)19:11 ID:IWeqLQBdd(3/3) AAS
>>916
外部リンク:github.com
918: (ワッチョイ 5d2d-4qoz) 2019/02/26(火)16:27 ID:jgGxVc0K0(1) AAS
ちょくちょくポインタ代替機能についての質問があるけどさ
どんな用途でポインタを使いたいのかわかんないけど、大抵の場合はストリームで代用できるんじゃないのかな
919
(1): (アウアウウー Sa21-/4p0) 2019/02/26(火)19:45 ID:KXA/2sKca(1) AAS
ID3タグとかバイナリ使うにゃ要るだろ
920: (ワッチョイ a95f-cnIv) 2019/02/26(火)22:52 ID:cz3vAcnh0(1) AAS
>>919
バイナリデータもストリームで扱える
921: (ワッチョイ a5e3-rusg) 2019/02/26(火)23:01 ID:w0dNr8TE0(1) AAS
バイナリ弄るならSpanでよくね?
922: (ワッチョイ 6d7b-SpKW) 2019/02/27(水)22:56 ID:0yfFFlZD0(1) AAS
ポインタなんかアンマネージとのやり取りとBitmapdataでしか使ったことないな
アンマネージとのやり取りだとrefとかoutにしとけばあとは何も考えなくていいから助かる
923
(3): (ワッチョイ b702-W5e4) 2019/03/02(土)10:07 ID:yMVoU8j+0(1/2) AAS
「変数aが1,4,5,7のいずれかである場合」
という論理式を書く場合
 (a==1) || (a==4) || (a==5) || (a==7)
とswitch文以外でもっと手っ取り早く書く方法ありますか?
924
(1): (ワッチョイ bfe9-IBRN) 2019/03/02(土)10:20 ID:Ud+LwFnR0(1) AAS
>>923
その表現が一番端的でわかりやすいのではないですか?
925
(1): (ワッチョイ 9fad-5O6o) 2019/03/02(土)10:21 ID:Vr07loEY0(1) AAS
>>923
()いらない
926
(2): (アウアウウー Sa9b-zhdC) 2019/03/02(土)11:05 ID:heck9gfNa(1) AAS
new [] {1, 4, 5, 7}.Contains(a)
927
(1): (ワッチョイ 9f01-dMaL) 2019/03/02(土)11:08 ID:Co1I1oSR0(1) AAS
>>923
その程度ならその書き方が一番わかりやすいと思うが比較対象がもっと多いとか可変にしたいとかなら
var C = new HashSet<int>(){1, 4, 5. 7};
if(C.Contains(a)){ … }
とかもある
928
(1): (ワッチョイ b702-W5e4) 2019/03/02(土)14:06 ID:yMVoU8j+0(2/2) AAS
>>924
数が少ないうちはいいんですが

>>925
カッコの上でShift+Ctrl+}すると
式部分を一発選択できるのであえてそうしてる

>>926
これがいい感じです
少しオーバーヘッドが気になりますが
929: (ワッチョイ 9f61-W5e4) 2019/03/02(土)14:59 ID:AX9YyrwL0(1) AAS
SQLみたく
a IN (1,4,5,7)
てかければいいなとおもうが、aが右側になっちゃうのが若干違和感
930: (ワッチョイ b717-W5e4) 2019/03/02(土)15:04 ID:Nsc0DUxH0(1) AAS
拡張メソッド作れば解決
931: (アウアウウー Sa9b-/jBK) 2019/03/02(土)19:46 ID:5yoALKCSa(1) AAS
>>927以上の書き方ねーべ
オーバーヘッドなんぞ無きに等しい
932
(1): (ワッチョイ ffa7-3oSp) 2019/03/02(土)20:18 ID:zHCAEP8E0(1) AAS
>>928
HashSetやDictionaryは要素の数に左右されない方法でアクセスを行うから
含まれてるか否かといったような検索用途に限定すれば1個だろうが1万個だろうが常に高速にアクセス出来る
Listや配列は要素数に比例してアクセス時間かかるようになるが
933: (スプッッ Sd3f-2nwm) 2019/03/02(土)21:00 ID:RzDDiNewd(1) AAS
なぜ要素数が増えることがある
という大前提を最初の質問時に明記しないのか
934: (アウアウエー Sadf-oIIs) 2019/03/02(土)22:03 ID:CQ1ng92ga(1) AAS
>>926
これ、new[]の部分を()で括らなくていいのは何か直感に反するけど、
newもnew[]もドット演算子と同じ優先順位なのかw

キャスト演算子も同じ扱いにしてくれたらよかったのに
935
(1): (ワッチョイ 9f2f-nxCI) 2019/03/03(日)01:24 ID:5kU0Dorz0(1/2) AAS
>>932
もとの要素がどこにあるかよくわからんけどな
HashSet作成して要素セットするオーバーヘッドがあるだろう
格納時にハッシュ値計算するから比較のコストが低いわけで、その分格納にコストがかかるんだぜ
936: (アウアウエー Sadf-vtKZ) 2019/03/03(日)02:51 ID:0iBtFMi0a(1) AAS
使い捨てなら配列のほうが安そうな気はするが
それが差となって現れるようなユースケースとも思えんしなあ
937: (ワッチョイ 9f61-LAF0) 2019/03/03(日)08:04 ID:1vB8VE1Z0(1) AAS
また質問者無視してる
938: (ワッチョイ 179f-bDR4) 2019/03/03(日)09:05 ID:wNoJ2Bbs0(1) AAS
質問者ってそんなに偉いの?
そいつの質問に常に合致した話題じゃなきゃダメなの?
ひとつの質問があって、それを機会に派生してもいいし、あとは自由に意見しあえってもいい

どんだけ構ってほしいんだ
939: (ワッチョイ f7a7-mFPe) 2019/03/03(日)09:06 ID:467OkvF30(1) AAS
気にしてるの君じゃん
自由でいいと思うなら
かってにやってりゃいいじゃん
どんなけかまってほしいの?
940: (アウアウカー Sa6b-u4yZ) 2019/03/03(日)09:27 ID:qK6tlWl9a(1) AAS
ROM専からすると多少横道にそれてもいろんな手法を見れるほうが面白い
正直これくらいの質問なら好きにしろって感じだろ
941: (ワッチョイ ffa7-3oSp) 2019/03/03(日)10:44 ID:wOo332Lk0(1) AAS
>>935
だから検索用途ならって書いた訳だが
if ((a==1) || (a==4) || (a==5) || (a==7))って書けるってことはAddは頻繁に行わないと受け取ったわ
942
(1): (アウアウエー Sadf-oIIs) 2019/03/03(日)12:55 ID:3ZaOSZpTa(1) AAS
述語の部分が、

(1) 全要素を常に == で評価
(2) 全要素を同じ演算子で評価するが、==以外の演算子も使われる場合がある
(3) 要素ごとに個別の評価方法

で最適な答えが変わりそうなんでその辺ははっきりした方がよかったかもね。
質問者は
(a==1) || (a==4) || (a==5) || (a==7)
の代替案を聞いてるんだから普通に考えれば要素数はそんなに多くないはずで
パフォーマンス云々は風呂敷広げすぎだろうw
943
(2): (ワッチョイ d763-vAvN) 2019/03/03(日)13:55 ID:Nfj27eon0(1) AAS
議論の途中で申し訳ないのですが
例えば独自クラスで、こんなのがある。

独自クラス{
string name {get; set;}
decimal num1 {get; set;}
decimal num2 {get; set;}


というのがあって、グリッドビューにList〈独自クラス〉をデータソースとして渡して表示させたいのですが
numは3,4,と増える可能性があります。(型はすべて同じ)
この場合にソースコードをメンテナンスすることなくnumの増減に対応するにはどのようにすれば良いでしょうか?
944: (ワッチョイ d7d2-J00P) 2019/03/03(日)14:46 ID:NjSnZzWN0(1) AAS
decimal[] num {get; set;}
とか、
Dictionary<int,decimal> num { get; set; }
じゃダメなの?
なんか設計レベルで問題がありそうな気もするけど。
945: (ワッチョイ 9f01-dMaL) 2019/03/03(日)15:03 ID:EUJr/Yte0(1) AAS
>>943
配列なりListなり使えばいいだけじゃねーの?
946: (ワッチョイ 5768-W5e4) 2019/03/03(日)16:04 ID:lbgm80aQ0(1) AAS
固定値でIFするのは好きじゃないな。
ソースの冒頭で定数を定義したい。
947: (ワッチョイ ff1b-vAqM) 2019/03/03(日)16:50 ID:fEIk0m7q0(1) AAS
>>943
列が可変になるのならデータテーブル使うのが楽だと思う。クラスでやるとしたらexpandoで作るもなくはないと思うけど、それなら上にある通りDictionaryの方がシンプルではないかと。
948: (ワッチョイ 9f2f-2ce8) 2019/03/03(日)21:37 ID:5kU0Dorz0(2/2) AAS
>>942
質問者がオーバーヘッド気になるとか発言してるので、パフォーマンスを考慮することに意味はあるんじゃね

まあ、ずらずらと手書き出来る程度の要素数ならどれ使っても大差ないって言っとくべきではあるかもしれんが
949
(1): (ワッチョイ 3761-V+g/) 2019/03/05(火)02:59 ID:01ls3eLR0(1) AAS
C#はセキュリティー的に問題があるので使わないほうがいい。
950: (ワッチョイ 9fad-5O6o) 2019/03/05(火)03:03 ID:uKTTdpNO0(1) AAS
>>949
詳しく
951
(1): (ワッチョイ ff63-/O1n) 2019/03/05(火)04:19 ID:6CrjVVG40(1) AAS
お前何回も見てるから詳しくしなくていい
952: (ワッチョイ 179f-bDR4) 2019/03/05(火)08:33 ID:Q/LSKwqY0(1) AAS
>>951
詳しく
953: (ワッチョイ ffa7-3oSp) 2019/03/05(火)12:55 ID:xG/V/FM40(1) AAS
一発でソースコード復元されるからか?
それを言ったらJavaも同じだから泥アプリとか簡単に解析出来るけど
954: (ワッチョイ ff63-RqxP) 2019/03/05(火)15:29 ID:zDemJk6G0(1) AAS
それはMSも認識してるしフリーの難読化ツールが何個も出てるんやで

難読化が必要な理由 | Microsoft Docs 外部リンク:docs.microsoft.com
955: (ブーイモ MMbf-LAF0) 2019/03/05(火)20:24 ID:X7v05Ly8M(1) AAS
うちのソースは普通に難読だけどな
956: (ブーイモ MM3b-vAvN) 2019/03/05(火)20:50 ID:phKvM6KvM(1) AAS
おれのソースコードはデフォで難読だから余裕
957
(1): (ワッチョイ 932c-McIj) 2019/03/07(木)00:13 ID:30anmeL+0(1) AAS
難読化しないとってほどのソースコードなんてそんなに無いような気がするけどな…
そもそもOSSが当たり前みたいなこんな時代に
958: (ワッチョイ 92ad-YS+u) 2019/03/07(木)01:10 ID:tnYmqFtJ0(1) AAS
>>957
見せられない処理はAPIの向こう側だしね
959: (ワッチョイ 7317-uGU8) 2019/03/07(木)19:34 ID:Kf1DGo5Q0(1) AAS
ゲームは改造対策に難読化したほうが良さげ
960: (ワッチョイ d6da-uGU8) 2019/03/08(金)13:12 ID:5Js7CVOV0(1) AAS
オリジナルソースがスパゲッティでも
ILSpyなんかを通すとオリジナルより見やすく逆コンパイルしてくれるからな。
961: (ワッチョイ 9261-uGU8) 2019/03/08(金)14:21 ID:p3uWfhXt0(1) AAS
そんなのあるんだ?ありがたいな。スパゲティにはほとほと手を焼いてたんだ。きれいにしてくれるなら使ってみようかなw
962: (スフッ Sd32-McIj) 2019/03/08(金)18:09 ID:XK/LB6aKd(1) AAS
メソッド単位は変わらないからプライベートやグローバル使いまくりのスパゲティはどうにもならないけどね
963: (ワッチョイ 7317-uGU8) 2019/03/08(金)19:36 ID:W3YxLksd0(1) AAS
制御フロー難読化をやるとさらに汚くしてくれるからオススメ
964: (ワッチョイ 167b-91/d) 2019/03/08(金)20:13 ID:S6VEx3Fw0(1) AAS
メソッドのローカル変数をきれいに整頓してくれるILSpy△
そろそろここも終わるけど
C#, C♯, C#相談室 Part95
2chスレ:tech
でいいよね。隔離スレをわざわざ新しく立てる必要もないし
965: (ワッチョイ b302-B/CD) 2019/03/14(木)19:31 ID:uF+nNtm+0(1) AAS
ライブラリレベルのオーバーヘッドを気にするのは止めましょう
ガベージコレクションが前提の言語を使ってる以上無駄な努力に終わります
性能絶対重視なら最初からCやASMで書いた方が良いし
よほどのスパーハカーでもない限りそんな努力が報われるほどの性能差にならないと思われます
966
(1): (ワッチョイ b302-PKKy) 2019/03/14(木)21:34 ID:DpwzO91B0(1) AAS
ASM?
コンパイラに勝てると思ってるのか?
967
(1): ◆QZaw55cn4c (ワッチョイ 6fe9-h1+v) 2019/03/14(木)21:49 ID:NTAm4EVS0(1/2) AAS
>>966
asm の教科書を書いていますが、「そのお題、asm で書く理由がない…」という深刻な問題に直面しています
asm で書くのに適したお題は何かありませんか?
968: (ワッチョイ ffad-OnF4) 2019/03/14(木)21:52 ID:SvZaCm1k0(1) AAS
最初のCコンパイラかな
969: (アウアウエー Sadf-FtxA) 2019/03/14(木)22:53 ID:fi3bTXEpa(1/3) AAS
x86の機械語は知らんけど、CPUを汎用計算機ではなくHWとして使いたい場合は
直接機械語で書くしかないでしょう
970
(1): (ワッチョイ cf63-oGl6) 2019/03/14(木)22:56 ID:6sRnwOjo0(1) AAS
CPUを汎用計算機じゃなくてHWとして使いたいようなニーズなんてほとんどの人にはねえだろw
971
(1): (アウアウエー Sadf-FtxA) 2019/03/14(木)22:59 ID:fi3bTXEpa(2/3) AAS
だからASMなんて(今となっては)ニッチな需要しかないのでは?
972
(1): ◆QZaw55cn4c (ワッチョイ 6fe9-h1+v) 2019/03/14(木)23:12 ID:NTAm4EVS0(2/2) AAS
>>971
その需要の一例を知りたいですね…
973: (ワッチョイ ff01-jA9u) 2019/03/14(木)23:13 ID:3EvgP48J0(1) AAS
>>967
ブート部分とかかな
I/O命令とかを発行する部分もあるけどこっちはインラインアセンブラでもいいかな
974: (アウアウエー Sadf-FtxA) 2019/03/14(木)23:43 ID:fi3bTXEpa(3/3) AAS
>>972
必要を無視すればBCD演算とか。
最終的にBCD演算命令に翻訳されるようなコードをC#では(Cでも)書けないはず。

まあx86ならマルチメディア系の命令とかが王道なんだろうけどね知らんけど。
975
(1): (ワッチョイ b390-TzFu) 2019/03/14(木)23:48 ID:nlDJyEEg0(1) AAS
ニッチな事には変わりないけど、
外部リンク:ufcpp.net
hardware intrinsicとか入ってくるし
976: (ワッチョイ ffc7-kdx8) 2019/03/15(金)20:54 ID:lWIPCB/k0(1) AAS
20年ぐらい前の1クロックが今より数十倍以上高価だった頃なら、
ASMによる人力高速化も(コスト的に見合うという点で)意味があった

Cコードで表現されてない知識も使ってちっちゃな関数でも結構簡単に数十クロック程度は高速化できた
Cコードで表現されてない部分を使えば、今もやろうとすれば高速化はできると思う(コストに見合わないだけで)
(変数aとbは実はいつも a<b なのでこのニーモニックが使えるとか、
ここの条件判定文は実は別の変数を計算したときのレジスタのフラグと同じ意味なので計算しなおす必要はないとか)

>>975 の話題に近いけど、
今ならASMの意味があるのはJITまわりとかかな?
977: (ワッチョイ b302-PKKy) 2019/03/15(金)21:48 ID:D5NVJqkY0(1) AAS
コンパイラはパイプラインでデータハザードが起きない様に計算して命令の組み替えしたりする。
人間がそこまでできるかな?
オレは20年ぐらい前にmemcpyを高速化するためにアセンブラで組んだ。
今思うとCで組んでコンパイラに最適化させるべきだったかもね。
若気の至りだ。
978: (ワッチョイ ff42-B/CD) 2019/03/16(土)00:00 ID:6P+M3e6E0(1) AAS
asmはコンピュータの仕組みを理解するにはうってつけの題材では有るね
最新の特殊命令なんか不要だが、68Kなんか最高の素材だと思うわ
979: (ワッチョイ bf32-h1+v) 2019/03/16(土)00:15 ID:sQCNGdE30(1) AAS
ERMSBなんかを考えるとコンパイラも小手先なんかね
実行ハードでスケールするか、安定的な最適化か
汎用性を考えれば普通は後者になるだろうけど

というかC#ならCILレベルに留めるべきではねか
980
(1): (ブーイモ MMff-nnhC) 2019/03/16(土)05:39 ID:lafVI2fNM(1) AAS
WASMを最適化してくれ
981: (ワッチョイ 1379-sM4w) 2019/03/16(土)14:26 ID:gcoRXnnM0(1) AAS
今やIoT用でもメモリMBクラスだろ
アセンブラでハック必要な用途なんてないだろな
982: (ワッチョイ ff61-ynPM) 2019/03/16(土)15:56 ID:zOgp3uDK0(1) AAS
>>980
wasmになる前のLLVMの段階で既に最適化が出来る。
あと、詳しくは分からないが、wasmになった後の最適化も、
Emscriptein の opt.exe で一応はできるらしい。
但し、asm.jsとの「グルー」が複雑に絡んでいるので、
何をやっているかを理解するのはかなり難しく、
wasmで最適化しているのか、asm.jsで最適化しているのかは
忘れてしまった。
983: (ワッチョイ 332c-G90H) 2019/03/16(土)19:51 ID:Ox1b9ZEv0(1) AAS
スレを間違えたかと思っただろ
984
(2): (ワッチョイ cf7b-Qay2) 2019/03/16(土)20:27 ID:0AnVFDDg0(1) AAS
スレ終わりなんだから内容気にせず埋めてしまえwここ即死判定もないし
GetFilesやGetDirectoriesのようなメソッドでエクスプローラーと同じ順に格納してくれるメソッドが欲しい
ソートし直すのたまに忘れてしまう
985: (ワッチョイ b35f-YxN5) 2019/03/16(土)21:07 ID:d1qKciPD0(1) AAS
>>984
自分でユーティリティライブラリ作っとけば
986
(1): (ワッチョイ 7f47-jjdz) 2019/03/16(土)21:16 ID:LVoOn4ja0(1) AAS
>>984
こういうことじゃなくて?
var files = Directory.GetFiles(@"C:\hoge").OrderBy(name => name).ToArray();
987
(1): (アウアウエー Sadf-FtxA) 2019/03/16(土)21:24 ID:m10rap++a(1) AAS
>>986
そんな単純な話じゃないはず
外部リンク[php]:wiki.dobon.net
988
(1): (ワッチョイ cfe3-B/CD) 2019/03/16(土)21:28 ID:aNdxzMMr0(1) AAS
エクスプローラーと同じ順って今のエクスプローラーにどれだけソート項目があるか知ってんのか・・・
989: (スフッ Sd1f-xOws) 2019/03/16(土)21:28 ID:fhPcOkRld(1) AAS
>>987
なるほど
990: (ワッチョイ 4301-fmdW) 2019/03/16(土)22:01 ID:wgxWGDdm0(1) AAS
IEEEでまだ規格化されてない多ビット長の四則演算や、超コンパクトに処理を書く方法とか
991: (ドコグロ MMdf-jA9u) 2019/03/17(日)07:10 ID:WBoQCy0zM(1) AAS
>>988
普通の頭持ってりゃ名前のソートであることぐらいはわかりそうなもんだけどなw
992
(1): (アウアウカー Sa47-GKay) 2019/03/20(水)07:42 ID:74ozQqG6a(1) AAS
Visual Studioって2015と2017両方いれて、2015だけ綺麗にアンスコできる?
993
(1): (ワッチョイ 730c-B/CD) 2019/03/20(水)07:54 ID:LAIwbd+70(1) AAS
>>992
単体で入れても綺麗には削除できんぞ
994: (ラクッペ MM87-/SkX) 2019/03/20(水)09:19 ID:W/HUsmxnM(1) AAS
ワロタ
995
(1): (アウアウカー Sa47-GKay) 2019/03/20(水)12:21 ID:NDw+q9p/a(1) AAS
>>993
ありがとう
そ、それは置いといて(笑)
どちらか片方だけアンスコしたときにもう片方に必要なもんを削除されたりはしない?
996: (アウアウエー Sadf-FtxA) 2019/03/20(水)12:41 ID:JR1ztFlDa(1) AAS
VSに限らず明らかなNGは後から古いバージョンをインストールする行為だけのはず
アンインストールに関しては「意図としては」大丈夫なように作ってあるはず。

やってみたら?
最悪新しい方の修復インストールかOSの復元機能で何とかなるでしょ
997: (スププ Sd1f-xOws) 2019/03/20(水)14:05 ID:vc7KPojzd(1) AAS
試してみて欲しい
俺のPCにもVisual Studio 2010から全バージョンインストールされてるから参考にする
998
(1): (ワッチョイ b317-B/CD) 2019/03/20(水)18:48 ID:jN76oFxX0(1) AAS
2015だけ削除したいって何がしたいんだろ
C#使う分には複数バージョンあって困ることないし
999: (ワッチョイ a3e7-jjdz) 2019/03/20(水)18:53 ID:CvIVS+n40(1) AAS
>>998
使わないものを入れておいてもストレージ占有するだけ無駄じゃん
普通にある要求だと思うけど
1000: (ワッチョイ cf7b-Qay2) 2019/03/20(水)18:54 ID:jJ3kq/hZ0(1) AAS
2015の後に2017入れて2015アンインストールしたけど問題なかった
そのあとふと2015入れてみたら俺環だろうけど2015でビルド出来なくなった。2017の方は問題なし
そして問題のあった2015を再びアンインストールしたけど2017でずっと問題なし
>>995
2017だけ使う分には問題ないはず
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 697日 10時間 2分 52秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net

▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.206s*