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


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

C#, C♯, C#相談室 Part93



1 名前:デフォルトの名無しさん(ワッチョイ 1e06-m8Mb) mailto:sageteoff [2017/04/22(土) 08:52:00.93 ID:iVvswOrb0.net]
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

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

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

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

930 名前:デフォルトの名無しさん [2019/02/16(土) 15:03:48.09 ID:uy2P96bkM.net]
最近部活の後輩が黒魔術みたいなコードを書くようになって困ってるんだが対策ない?

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

public interface IMessenger {
__public MessageReceived();
}
public abstract class Messenger : IMessenger{
__public abstract void MessageReceived();
__public abstract void Retry();
}

931 名前:デフォルトの名無しさん [2019/02/16(土) 15:04:05.72 ID:uy2P96bkM.net]
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();
__}
}

932 名前:デフォルトの名無しさん [2019/02/16(土) 15:04:31.94 ID:uy2P96bkM.net]
こんなんだったから

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文字で分けるって言ってるんだから
何が起こってるかわかるように書くことを意識してもらわないと

933 名前:デフォルトの名無しさん [2019/02/16(土) 15:06:36.58 ID:8cj+4+Hl0.net]
まあ例外でプログラムは終了させるべきだよな
ただ客は例外が起きてもcatchで握りつぶしてスルーした方が文句言わないんだよな……

934 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:14:21.65 ID:auHH3gBua.net]
>>894
酷いな
MediatoRを使うようにアドバイスしてあげなよ

935 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:19:24.61 ID:PR5Tb5Rba.net]
>>894
2chのシステムは先頭の半角スーペースは除去するけど全角スペースは除去しない。
だから字下げは後者で

936 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:41:54.82 ID:q1DAaOKG0.net]
>>891
> catch { }ではw
ごめん、何を言いたいのかわかん
処理部分も当然必要だけど何を受けるかの話だから(Exception e)の方が重要だろ?

937 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 22:53:53.99 ID:gbHoDgK/0.net]
>>893
ちょっとMSに例外じゃなくエラーコード戻す設計にするようお前から言ってきてくんね?
W32APIはそうなってんのにFrameworkの方そうなってないじゃん

938 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 00:48:25.53 ID:0sFVNd3o0.net]
宗教戦争を見物now



939 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 14:42:24.50 ID:QIeMqQFm0.net]
byte*からbyte[]にする方法ってない?
new byte[64];みたいに新規確保してコピーしか方法ないんだろうか
Unsafe.As等で新規確保無しで出来るかと思って色々試してみたけど上手くいかない

940 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:01:42.36 ID:99sHKv96a.net]
「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
全然別の型なんだしあるわけないでしょう。
そういう危なっかしい機能を排除してるのがC#の売りの一つだったはずなわけで

コピーする機能ならMarshalあ

941 名前:スりにあるんじゃない? []
[ここ壊れてます]

942 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:16:25.11 ID:QIeMqQFm0.net]
>>904
>「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
そういうことです

あるわけないと言いますが、その逆はあるので出来るかなと思い
(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)

943 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:21:31.28 ID:Ox4HquXb0.net]
>>905
>(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
具体的なコード希望

944 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:23:52.52 ID:UNDanSNQ0.net]
その逆がマネージドじゃ難しいからね
無理じゃないかなあ

やっぱこれからはSpanですよスパンスパン

945 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:27:09.29 ID:QIeMqQFm0.net]
>>906
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バイト後ろにづらないと出来ないから実用は難しいけど一応可能

946 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:31:55.60 ID:QIeMqQFm0.net]
fixed (byte* ptr = &data[0]) *(MyStruct*)ptr;
と大体同じではあります

947 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:40:47.44 ID:QIeMqQFm0.net]
やっぱりこういうことやりたければC++に池ってことなのでしょうか
記憶力悪いのでVSがC#ほど助けてくれないC++に行くのは億劫なため質問させてもらいました

948 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 16:16:49.38 ID:rf6p5Xt1a.net]
Span使え



949 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 16:27:59.23 ID:tKx1WgvG0.net]
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とか

950 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 12:35:31.38 ID:78/oBfjca.net]
self containedって完全に依存なしになるわけじゃないのね
alpine用にself containedでビルドしても動かなかった
libstdc++とか色々インストールしたら動いたけどさ
dotnetコマンド同梱と比較してコンテナサイズも殆ど変わらないし意味あるのかなこれ

951 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 12:44:14.85 ID:IWeqLQBdd.net]
>>913
おばか

952 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 14:33:57.39 ID:XSMrGlqdp.net]
SCDは.NETのランタイムを別途インストールじゃなくて同梱するってだけの話だしね
公式ドキュメントにも注釈あるけどLinuxは仕様上完全に断ち切るのは難しいんじゃない?
Windowsだと同梱のファイルだけでそのまま動くけど

953 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 17:41:05.62 ID:DKuxuLxMa.net]
>>915
Windows配布用と割り切った方がいいのかもしれない
Linuxだと管理下のサーバーかコンテナが多いからSCに拘る必要もない

954 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 18:56:24.09 ID:IWeqLQBdd.net]
最近のバッチはみんなSCDにしてる
らくちんらくちん

955 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:03:47.82 ID:DKuxuLxMa.net]
Goのように1バイナリにはならんものかね

956 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:11:19.09 ID:IWeqLQBdd.net]
>>918
https://github.com/dotnet/designs/pull/52

957 名前:デフォルトの名無しさん [2019/02/26(火) 16:27:59.06 ID:jgGxVc0K0.net]
ちょくちょくポインタ代替機能についての質問があるけどさ
どんな用途でポインタを使いたいのかわかんないけど、大抵の場合はストリームで代用できるんじゃないのかな

958 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 19:45:51.64 ID:KXA/2sKca.net]
ID3タグとかバイナリ使うにゃ要るだろ



959 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 22:52:44.40 ID:cz3vAcnh0.net]
>>921
バイナリデータもストリームで扱える

960 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:01:06.66 ID:w0dNr8TE0.net]
バイナリ弄るならSpanでよくね?

961 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 22:56:28.74 ID:0yfFFlZD0.net]
ポインタなんかアンマネージとのやり取りとBitmapdataでしか使ったことないな
アンマネージとのやり取りだとrefとかoutにしとけばあとは何も考えなくていいから助かる

962 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:07:34.38 ID:yMVoU8j+0.net]
「変数aが1,4,5,7のいずれかである場合」
という論理式を書く場合
 (a==1) || (a==4) || (a==5) || (a==7)
とswitch文以外でもっと手っ取り早く書く方法ありますか?

963 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:20:00.75 ID:Ud+LwFnR0.net]
>>925
その表現が一番端的でわかりやすいのではないですか?

964 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:21:50.56 ID:Vr07loEY0.net]
>>925
()いらない

965 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:05:26.20 ID:heck9gfNa.net]
new [] {1, 4, 5, 7}.Contains(a)

966 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:08:41.04 ID:Co1I1oSR0.net]
>>925
その程度ならその書き方が一番わかりやすいと思うが比較対象がもっと多いとか可変にしたいとかなら
var C = new HashSet<int>(){1, 4, 5. 7};
if(C.Contains(a)){ … }
とかもある

967 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 14:06:20.64 ID:yMVoU8j+0.net]
>>926
数が少ないうちはいいんですが

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

>>928
これがいい感じです
少しオーバーヘッドが気になりますが

968 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 14:59:32.01 ID:AX9YyrwL0.net]
SQLみたく
a IN (1,4,5,7)
てかければいいなとおもうが、aが右側になっちゃうのが若干違和感



969 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 15:04:48.62 ID:Nsc0DUxH0.net]
拡張メソッド作れば解決

970 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 19:46:04.84 ID:5yoALKCSa.net]
>>929以上の書き方ねーべ
オーバーヘッドなんぞ無きに等しい

971 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 20:18:35.52 ID:zHCAEP8E0.net]
>>930
HashSetやDictionaryは要素の数に左右されない方法でアクセスを行うから
含まれてるか否かといったような検索用途に限定すれば1個だろうが1万個だろうが常に高速にアクセス出来る
Listや配列は要素数に比例してアクセス時間かかるようになるが

972 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 21:00:42.79 ID:RzDDiNewd.net]
なぜ要素数が増えることがある
という大前提を最初の質問時に明記しないのか

973 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 22:03:38.03 ID:CQ1ng92ga.net]
>>928
これ、new[]の部分を()で括らなくていいのは何か直感に反するけど、
newもnew[]もドット演算子と同じ優先順位なのかw

キャスト演算子も同じ扱いにしてくれたらよかったのに

974 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 01:24:26.71 ID:5kU0Dorz0.net]
>>934
もとの要素がどこにあるかよくわからんけどな
HashSet作成して要素セットするオーバーヘッドがあるだろう
格納時にハッシュ値計算するから比較のコストが低いわけで、その分格納にコストがかかるんだぜ

975 名前: []
[ここ壊れてます]

976 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 02:51:31.92 ID:0iBtFMi0a.net]
使い捨てなら配列のほうが安そうな気はするが
それが差となって現れるようなユースケースとも思えんしなあ

977 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 08:04:01.95 ID:1vB8VE1Z0.net]
また質問者無視してる

978 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 09:05:10.09 ID:wNoJ2Bbs0.net]
質問者ってそんなに偉いの?
そいつの質問に常に合致した話題じゃなきゃダメなの?
ひとつの質問があって、それを機会に派生してもいいし、あとは自由に意見しあえってもいい

どんだけ構ってほしいんだ



979 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 09:06:48.39 ID:467OkvF30.net]
気にしてるの君じゃん
自由でいいと思うなら
かってにやってりゃいいじゃん
どんなけかまってほしいの?

980 名前:デフォルトの名無しさん [2019/03/03(日) 09:27:17.06 ID:qK6tlWl9a.net]
ROM専からすると多少横道にそれてもいろんな手法を見れるほうが面白い
正直これくらいの質問なら好きにしろって感じだろ

981 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 10:44:42.90 ID:wOo332Lk0.net]
>>937
だから検索用途ならって書いた訳だが
if ((a==1) || (a==4) || (a==5) || (a==7))って書けるってことはAddは頻繁に行わないと受け取ったわ

982 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 12:55:52.71 ID:3ZaOSZpTa.net]
述語の部分が、

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

で最適な答えが変わりそうなんでその辺ははっきりした方がよかったかもね。
質問者は
(a==1) || (a==4) || (a==5) || (a==7)
の代替案を聞いてるんだから普通に考えれば要素数はそんなに多くないはずで
パフォーマンス云々は風呂敷広げすぎだろうw

983 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 13:55:56.58 ID:Nfj27eon0.net]
議論の途中で申し訳ないのですが
例えば独自クラスで、こんなのがある。

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


というのがあって、グリッドビューにList〈独自クラス〉をデータソースとして渡して表示させたいのですが
numは3,4,と増える可能性があります。(型はすべて同じ)
この場合にソースコードをメンテナンスすることなくnumの増減に対応するにはどのようにすれば良いでしょうか?

984 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 14:46:12.80 ID:NjSnZzWN0.net]
decimal[] num {get; set;}
とか、
Dictionary<int,decimal> num { get; set; }
じゃダメなの?
なんか設計レベルで問題がありそうな気もするけど。

985 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 15:03:54.49 ID:EUJr/Yte0.net]
>>945
配列なりListなり使えばいいだけじゃねーの?

986 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 16:04:38.55 ID:lbgm80aQ0.net]
固定値でIFするのは好きじゃないな。
ソースの冒頭で定数を定義したい。

987 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 16:50:33.82 ID:fEIk0m7q0.net]
>>945
列が可変になるのならデータテーブル使うのが楽だと思う。クラスでやるとしたらexpandoで作るもなくはないと思うけど、それなら上にある通りDictionaryの方がシンプルではないかと。

988 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 21:37:48.24 ID:5kU0Dorz0.net]
>>944
質問者がオーバーヘッド気になるとか発言してるので、パフォーマンスを考慮することに意味はあるんじゃね

まあ、ずらずらと手書き出来る程度の要素数ならどれ使っても大差ないって言っとくべきではあるかもしれんが



989 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 02:59:42.60 ID:01ls3eLR0.net]
C#はセキュリティー的に問題があるので使わないほうがいい。

990 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 03:03:58.87 ID:uKTTdpNO0.net]
>>951
詳しく

991 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 04:19:27.01 ID:6CrjVVG40.net]
お前何回も見てるから詳しくしなくていい

992 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 08:33:58.12 ID:Q/LSKwqY0.net]
>>953
詳しく []
[ここ壊れてます]

994 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 12:55:11.87 ID:xG/V/FM40.net]
一発でソースコード復元されるからか?
それを言ったらJavaも同じだから泥アプリとか簡単に解析出来るけど

995 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 15:29:31.29 ID:zDemJk6G0.net]
それはMSも認識してるしフリーの難読化ツールが何個も出てるんやで

難読化が必要な理由 | Microsoft Docs https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2008/ms227271(v=vs.90)

996 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 20:24:10.57 ID:X7v05Ly8M.net]
うちのソースは普通に難読だけどな

997 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 20:50:38.72 ID:phKvM6KvM.net]
おれのソースコードはデフォで難読だから余裕

998 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 00:13:41.81 ID:30anmeL+0.net]
難読化しないとってほどのソースコードなんてそんなに無いような気がするけどな…
そもそもOSSが当たり前みたいなこんな時代に



999 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 01:10:43.27 ID:tnYmqFtJ0.net]
>>959
見せられない処理はAPIの向こう側だしね

1000 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 19:34:45.84 ID:Kf1DGo5Q0.net]
ゲームは改造対策に難読化したほうが良さげ

1001 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 13:12:26.41 ID:5Js7CVOV0.net]
オリジナルソースがスパゲッティでも
ILSpyなんかを通すとオリジナルより見やすく逆コンパイルしてくれるからな。

1002 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 14:21:31.67 ID:p3uWfhXt0.net]
そんなのあるんだ?ありがたいな。スパゲティにはほとほと手を焼いてたんだ。きれいにしてくれるなら使ってみようかなw

1003 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 18:09:25.36 ID:XK/LB6aKd.net]
メソッド単位は変わらないからプライベートやグローバル使いまくりのスパゲティはどうにもならないけどね

1004 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:36:48.59 ID:W3YxLksd0.net]
制御フロー難読化をやるとさらに汚くしてくれるからオススメ

1005 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:13:44.24 ID:S6VEx3Fw0.net]
メソッドのローカル変数をきれいに整頓してくれるILSpy△
そろそろここも終わるけど
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
でいいよね。隔離スレをわざわざ新しく立てる必要もないし

1006 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 19:31:23.01 ID:uF+nNtm+0.net]
ライブラリレベルのオーバーヘッドを気にするのは止めましょう
ガベージコレクションが前提の言語を使ってる以上無駄な努力に終わります
性能絶対重視なら最初からCやASMで書いた方が良いし
よほどのスパーハカーでもない限りそんな努力が報われるほどの性能差にならないと思われます

1007 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 21:34:22.29 ID:DpwzO91B0.net]
ASM?
コンパイラに勝てると思ってるのか?

1008 名前: mailto:sage [2019/03/14(木) 21:49:31.03 ID:NTAm4EVS0.net]
>>968
asm の教科書を書いていますが、「そのお題、asm で書く理由がない…」という深刻な問題に直面しています
asm で書くのに適したお題は何かありませんか?



1009 名前:デフォルトの名無しさん [2019/03/14(木) 21:52:50.86 ID:SvZaCm1k0.net]
最初のCコンパイラかな

1010 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 22:53:26.94 ID:fi3bTXEpa.net]
x86の機械語は知らんけど、CPUを汎用計算機ではなくHWとして使いたい場合は
直接機械語で書くしかないでしょう

1011 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 22:56:05.33 ID:6sRnwOjo0.net]
CPUを汎用計算機じゃなくてHWとして使いたいようなニーズなんてほとんどの人にはねえだろw

1012 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 22:59:30.46 ID:fi3bTXEpa.net]
だからASMなんて(今となっては)ニッチな需要しかないのでは?

1013 名前: mailto:sage [2019/03/14(木) 23:12:09.22 ID:NTAm4EVS0.net]
>>973
その需要の一例を知

1014 名前:りたいですね… []
[ここ壊れてます]

1015 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:13:00.27 ID:3EvgP48J0.net]
>>969
ブート部分とかかな
I/O命令とかを発行する部分もあるけどこっちはインラインアセンブラでもいいかな

1016 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:43:27.63 ID:fi3bTXEpa.net]
>>974
必要を無視すればBCD演算とか。
最終的にBCD演算命令に翻訳されるようなコードをC#では(Cでも)書けないはず。

まあx86ならマルチメディア系の命令とかが王道なんだろうけどね知らんけど。

1017 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:48:39.57 ID:nlDJyEEg0.net]
ニッチな事には変わりないけど、
https://ufcpp.net/blog/2018/12/hdintrinsic/
hardware intrinsicとか入ってくるし

1018 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 20:54:11.25 ID:lWIPCB/k0.net]
20年ぐらい前の1クロックが今より数十倍以上高価だった頃なら、
ASMによる人力高速化も(コスト的に見合うという点で)意味があった

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

>>977 の話題に近いけど、
今ならASMの意味があるのはJITまわりとかかな?



1019 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 21:48:50.55 ID:D5NVJqkY0.net]
コンパイラはパイプラインでデータハザードが起きない様に計算して命令の組み替えしたりする。
人間がそこまでできるかな?
オレは20年ぐらい前にmemcpyを高速化するためにアセンブラで組んだ。
今思うとCで組んでコンパイラに最適化させるべきだったかもね。
若気の至りだ。

1020 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 00:00:03.09 ID:6P+M3e6E0.net]
asmはコンピュータの仕組みを理解するにはうってつけの題材では有るね
最新の特殊命令なんか不要だが、68Kなんか最高の素材だと思うわ

1021 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 00:15:39.88 ID:sQCNGdE30.net]
ERMSBなんかを考えるとコンパイラも小手先なんかね
実行ハードでスケールするか、安定的な最適化か
汎用性を考えれば普通は後者になるだろうけど

というかC#ならCILレベルに留めるべきではねか

1022 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 05:39:50.41 ID:lafVI2fNM.net]
WASMを最適化してくれ

1023 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 14:26:07.02 ID:gcoRXnnM0.net]
今やIoT用でもメモリMBクラスだろ
アセンブラでハック必要な用途なんてないだろな

1024 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 15:56:32.11 ID:zOgp3uDK0.net]
>>982
wasmになる前のLLVMの段階で既に最適化が出来る。
あと、詳しくは分からないが、wasmになった後の最適化も、
Emscriptein の opt.exe で一応はできるらしい。
但し、asm.jsとの「グルー」が複雑に絡んでいるので、
何をやっているかを理解するのはかなり難しく、
wasmで最適化しているのか、asm.jsで最適化しているのかは
忘れてしまった。

1025 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 19:51:51.79 ID:Ox1b9ZEv0.net]
スレを間違えたかと思っただろ

1026 名前:デフォルトの名無しさん [2019/03/16(土) 20:27:45.17 ID:0AnVFDDg0.net]
スレ終わりなんだから内容気にせず埋めてしまえwここ即死判定もないし
GetFilesやGetDirectoriesのようなメソッドでエクスプローラーと同じ順に格納してくれるメソッドが欲しい
ソートし直すのたまに

1027 名前:Yれてしまう []
[ここ壊れてます]

1028 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:07:46.17 ID:d1qKciPD0.net]
>>986
自分でユーティリティライブラリ作っとけば



1029 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:16:16.11 ID:LVoOn4ja0.net]
>>986
こういうことじゃなくて?
var files = Directory.GetFiles(@"C:\hoge").OrderBy(name => name).ToArray();

1030 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:24:01.46 ID:m10rap++a.net]
>>988
そんな単純な話じゃないはず
https://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F111

1031 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:28:11.62 ID:aNdxzMMr0.net]
エクスプローラーと同じ順って今のエクスプローラーにどれだけソート項目があるか知ってんのか・・・

1032 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 21:28:35.53 ID:fhPcOkRld.net]
>>989
なるほど

1033 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 22:01:49.01 ID:wgxWGDdm0.net]
IEEEでまだ規格化されてない多ビット長の四則演算や、超コンパクトに処理を書く方法とか

1034 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 07:10:24.22 ID:WBoQCy0zM.net]
>>990
普通の頭持ってりゃ名前のソートであることぐらいはわかりそうなもんだけどなw

1035 名前:デフォルトの名無しさん [2019/03/20(水) 07:42:02.03 ID:74ozQqG6a.net]
Visual Studioって2015と2017両方いれて、2015だけ綺麗にアンスコできる?

1036 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 07:54:36.58 ID:LAIwbd+70.net]
>>994
単体で入れても綺麗には削除できんぞ

1037 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 09:19:38.34 ID:W/HUsmxnM.net]
ワロタ

1038 名前:デフォルトの名無しさん [2019/03/20(水) 12:21:41.32 ID:NDw+q9p/a.net]
>>995
ありがとう
そ、それは置いといて(笑)
どちらか片方だけアンスコしたときにもう片方に必要なもんを削除されたりはしない?



1039 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 12:41:43.72 ID:JR1ztFlDa.net]
VSに限らず明らかなNGは後から古いバージョンをインストールする行為だけのはず
アンインストールに関しては「意図としては」大丈夫なように作ってあるはず。

やってみたら?
最悪新しい方の修復インストールかOSの復元機能で何とかなるでしょ

1040 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 14:05:02.42 ID:vc7KPojzd.net]
試してみて欲しい
俺のPCにもVisual Studio 2010から全バージョンインストールされてるから参考にする

1041 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 18:48:25.28 ID:jN76oFxX0.net]
2015だけ削除したいって何がしたいんだろ
C#使う分には複数バージョンあって困ることないし

1042 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 18:53:06.53 ID:CvIVS+n40.net]
>>1000
使わないものを入れておいてもストレージ占有するだけ無駄じゃん
普通にある要求だと思うけど

1043 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 18:54:52.24 ID:jJ3kq/hZ0.net]
2015の後に2017入れて2015アンインストールしたけど問題なかった
そのあとふと2015入れてみたら俺環だろうけど2015でビルド出来なくなった。2017の方は問題なし
そして問題のあった2015を再びアンインストールしたけど2017でずっと問題なし
>>997
2017だけ使う分には問題ないはず

1044 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 697日 10時間 2分 52秒

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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