- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
788 :デフォルトの名無しさん[sage]:2015/03/08(日) 22:13:51.33 ID:JHTV8U6v - ところでこの馬鹿げたコードを見てくれ
ttps://ideone.com/YJ6bBz Blittable構造体を読み出すジェネリック拡張メソッドをスレッドセーフで実装しながら パフォーマンスを維持するにはこんな方法しか思いつかなかった バッファが静的フィールドだとvolatile付けたってlockしないとスレッドセーフに成らんよな? というかbyte[]インスタンスのTypeHandleはどっから来てるの?__makerefから取れるTypeHandleは typeof(byte[]).TypeHandleともtypeof(Array).TypeHandleともtypeof(byte).TypeHandleとも異なる… Type.GetTypeFromHandleUnsafeしてみりゃSystem.Byte[]が返ってくるArrayだけ構造違うの?
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
797 :デフォルトの名無しさん[sage]:2015/03/08(日) 23:25:34.17 ID:JHTV8U6v - >>793
うーん済まないがThreadStatic使うとnew byteするのと大してパフォーマンス変わらないんだよね スレッドセーフじゃない静的フィールドならReadInt32を上回る速度が出るんだけど… inputがMemoryStreamだとInternalReadInt32呼ばれて負けますがね!もはやC++/CLIでも使えって話だけど
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
799 :デフォルトの名無しさん[sage]:2015/03/08(日) 23:56:15.74 ID:JHTV8U6v - まぁミリ秒単位の話なんでそうなんだけどね
結局unsafeコードなら直にfixedキャスト書いた方が速いし マネージコードならSafeBuffer使えば良いし(AlignedSizeなのが玉に瑕だが Marshal.SizeOfTypeにもthe lack of a suitable generic constraint.なんて書かれてるし MSILで出来る事がC#で書けないのがなんかもにょる.NETの為の言語じゃねーのかよって感じで
|
|