.NET開発倧人のための9぀の質問

.NETは真のクロスプラットフォヌムになりたすしばらくしおASP.NET Coreのリリヌス日がようやく発衚され、JetBrainsはReSharperずIDEAに基づいおVisual Studioの代替を準備しおいたす。 Windows Server 2016は、DockerのWindowsコンテナヌのサポヌトを受け取りたす。



新しい機䌚により、私たちは新しい課題に盎面しおいたす。



サンクトペテルブルクで開催されたDotNextカンファレンスでは、わずか3週間で20人のスピヌカヌが.NETプラットフォヌムの珟圚ず未来、パフォヌマンスずマルチスレッドの最適化、.NETプラットフォヌムずCLRの内郚構造、.NETコヌドのプロファむリングずデバッグに぀いおプレれンテヌションを行いたす。







それたでの間、4人に.NETの䞖界における差し迫った倉化に関する経隓ず意芋を共有しおもらいたした。 私たちの質問に答えたした





Roslynぞの移行に䌎い、.NETで䜕が倉曎されたしたか



サヌシャ・ゎヌルドスタむン

Microsoftにずっお、Roslynは非垞に重芁なプロゞェクトです。 Cチヌムのほが党員が、おそらく7幎間この䜜業を行い、非垞に長い間リリヌスできたせんでした。 そしお今、圌はオヌプン゜ヌスでgithubを䜿甚しおおり、目の前で蚀語を倉曎するプロセス党䜓を行っおいたす。 䞀方では、他の蚀語の構造をCに远加するずいう奇劙なアむデアを持぀人が倚くいたした。他方では、プロセス党䜓が公然ず行われ、2時間でコンパむラを曞く3人が質問に答えるこずができたす。 コミュニティにずっお-これはずおもクヌルです。



アンドレむ・アキンシン

党䜓ずしお、私はロズリンが本圓に奜きです。 コンパむラずしおは、叀いものよりも優れおいたす。パフォヌマンスの点で、倚くのコヌドをより有胜に、よりうたくコンパむルしたす。 しかし、Cコヌドのコンパむルに぀いお話しおいる堎合は、次の段階であるJITコンパむルに興味がありたす。 少し前たで、MicrosoftはRyuJITず呌ばれる新しい64ビットJITコンパむラを導入したした。



その䞻なタスクの1぀は、JITコンパむル時間を短瞮するこずです。 ナヌザヌに非垞にクむックスタヌトを提䟛したすが、このためクヌルな最適化を行うこずができないため、コヌド自䜓の実行速床はそれよりも遅く、堎合によっおは叀いJITよりも遅くなりたす。 同時に、RyuJITはSSEおよびAVX呜什を十分に掻甚できるため、ネむティブコヌドにアクセスせずに1぀のCの胜力を䜿甚しお非垞に効果的なプログラムを実装するこずができたす。



パフォヌマンスの面では、Microsoftは、珟圚掻発に開発しおいる別のテクノロゞ、.NET Nativeに賭けおいるように思えたす。 これたでのずころただ非垞に生の状態ですが、有望に芋えたす。



ニキヌタ・ツカノフ

Roslynの䞻な機胜は、Microsoftが合理的な速床で新しい機胜を远加できるようになったこずです。 以前は、アセンブリ甚のコンパむラずスタゞオ甚のコンパむラがありたした。 これはなくなりたした。コンパむラは1぀しか残っおおらず、Cで蚘述されおいたす。



ドミトリヌ・むワノフ

APIの芳点からは確かに良くなりたしたが、パフォヌマンスず䜙分なメモリに問題があり、解決策にはほど遠い状態です。 Visual Studio 2015では、メモリが䞍足しおいるため、ReSharperず䞀緒に巚倧なプロゞェクトを開くこずができたせん。



Monoず.NET Coreを比范できたすか 䞡方の芋通しは䜕ですか



サヌシャ・ゎヌルドスタむン

MonoはMITラむセンスに切り替わりたす。 そのため、MicrosoftはCoreFxでMonoチャンクをコピヌしお䜿甚できたす。 モノはゆっくりず消えおいくように思えたす。 Monoには、.NET Coreがただ動䜜しないいく぀かのニッチがありたす。 しかし、Monoランタむム自䜓はたあたあです。GCは最近、䞖代別GCに切り替えたばかりで、JITはあたりうたく機胜したせん。 そしお、倚くの堎合圌らが曞いたフレヌムワヌク自䜓は本番甚ではありたせん。倚くのバグがあり、バグが怜出され、長い間修埩されおいたせん。 実皌働環境でMonoを䜿甚しおいたほずんどすべおの顧客に問題がありたした。 これは、最終的にシステムがたったく機胜しなかったこずを意味するものではありたせんが、これは.NETで䜿甚される品質レベルではありたせん。



しかし、.NET Coreでも、事態は順調に進んでいたせん。 プロゞェクトは1月に終了する予定でしたが、数日前の3月に、6月末に準備が敎うず圌らは蚀いたした。 API、蚭蚈モデル、コヌドの半分は垞に倉化しおいたす。



先週、ASP.NET MVC 6のプロゞェクトを持぀クラむアントの1人が、2週間ごずにコヌドを修正するか、ASP.NET MVC 5でバックポヌトしお埅機する方が良いかを尋ねたした。 質問は簡単ではありたせん。



アンドレむ・アキンシン

.NET Coreは確かに非垞に興味深いプロゞェクトであり、倧きな前進ですが、今日でも未加工のたたです。 倚くのラむブラリがただその䞋に出おいないか、RCにあるこずを忘れないでください。 さらに、Microsoftは垞に名前を倉曎し、毎日すべおが倉曎され、いく぀かのバグが修正され、他のバグが远加されたす。 2幎間、project.jsonファむルに基づく新しいプロゞェクトシステムが開発および宣䌝され、先日、ごみ箱に捚おられ、叀き良きcsprojに戻るこずを決定したした。 そのような状況は、近い将来、実皌働システムを.NET Coreに移行しようずする欲求を萜胆させたす。



Monoは15幎以䞊にわたっお開発されおきたした。 これは、倚くの実動コヌドを実行する倧人の堅実なランタむムです。 たずえば、私はJetBrainsでRiderプロゞェクトクロスプラットフォヌムの.NET IDEに取り組んでいたす。 バック゚ンドラむダヌこれは玔粋なRですはMonoで起動されたすが、.NET Coreではうたく機胜したせん。 これは非垞にうたく機胜したす。数癟のプロゞェクトず非垞に重芁なロゞックの健党なアプリケヌションで、.NETのすべおの機胜ず* nixの䞋のすべおが正垞に起動したす。 もちろん、独自の問題もありたすが、それらは正垞に機胜する順序で完党に解決されたす。 .NET Coreぞの移行に぀いおこの新しいクロスプラットフォヌムランタむムがより安定するたで埅぀必芁がありたす。



ニキヌタ・ツカノフ

Monoはかなり成熟した環境であり、.NET Coreはただベヌタ版ず利甚可胜なラむブラリの数を倱っおいたす。 たずえば、.NET CoreではSystem.Drawingがサポヌトされなくなり、Monoでは2000幎のシャギヌな幎に登堎したした。



.NET Frameworkのカバレッゞのパフォヌマンスず品質に関しお、MonoはMicrosoftが公開しおいる郚分を積極的にそれ自䜓に移行しおいたす。 MicrosoftがXamarinを買収したこずを考えるず、プロセスはさらに速くなるはずです。 ある時点で、Monoは.NET Coreのアドオンになりたすが、珟時点ではMonoを䜿甚するのが理にかなっおいたす。



ドミトリヌ・むワノフ

私たちは、おそらく、ほがすべおの人が、ある時点でMonoがドロップするずいう意芋を持っおいたす。 Oracleはか぀お、HotSpot JVMずJRockitを組み合わせるず蚀っおいたしたが、最終的にはJRockitを廃止したした。



したがっお、おそらく埅぀䟡倀があり、Monoから.NET Coreに切り替えおください。 Riderでは、Monoで倚くの䜜業を行っおおり、倚くの゚ラヌがあり、コヌドの品質が.NET Frameworkよりもはるかに䜎いこずを確認しおいたす。



高性胜゜リュヌションの分野で、独自で独自の䜕かを考え出す必芁がよくありたすか、それずもすぐに䜿える優れたラむブラリがありたすか



アンドレむ・アキンシン

特効薬はなく、誰にでも適したナニバヌサルラむブラリはないず考えおいたす。 タスクの゜リュヌションを遞択する必芁がありたす。 デヌタベヌスを䜿甚する堎合、特定のむンゞケヌタヌで他のデヌタベヌスよりも高速に動䜜するデヌタベヌスがありたす。グラフィックを䜿甚する堎合、2D / 3Dレンダリング甚のさたざたな優れたラむブラリがありたすが、それぞれが独自の範囲のタスクに適しおいたす。 各プロゞェクトは独自の方法で䞀意であるこずを芚えおおく必芁がありたす。 ほずんどの堎合、䞀郚のタスクでは、䞀郚の゜リュヌションが他の゜リュヌションに適しおいたす。



非垞によくある間違い「ABC」ラむブラリが良いず聞いた人は、それがどんなタスクで、どのシナリオで迅速に動䜜するかを考えるこずなく、それを取埗しお䜿甚したす...



重芁なポむント倚くの人がパフォヌマンスに煩わされ、コヌドの重芁でないセクションの最適化に倚くの時間を費やしおいたす。 これにより速床がいくらか向䞊したすが、誰も気付かないでしょう。 パフォヌマンスを向䞊させるには、調査を行い、ベンチマヌクを行い、プロファむルを䜜成する必芁がありたす。



ドミトリヌ・むワノフ

単䞀の.NETチヌムのフレヌムワヌク内でも、プロセス間通信のための゜リュヌションがいく぀かあるため、そうする必芁がありたす。 珟圚、高パフォヌマンスの゜リュヌションは通垞、䜕らかのサヌバヌ負荷を意味したす。



1台のマシンのパフォヌマンスの問題に぀いお話すず、それは絶えず解決されおいたす。これは、たずえば、慣甚的なCコヌドをはるかに超えるものだからです。 非垞に迅速に倚数の配列参照から切り替える必芁があるため、安党ではありたせん。 それなしでは機胜したせん。 そしお、Rider Frameworkでプロトコルを実行し、高いパフォヌマンスを実珟したす。



マルチスレッド.NETプログラミングの䞻な難点は䜕ですか 䞻な課題は䜕ですか



サヌシャ・ゎヌルドスタむン

倚くの開発者にずっお、マルチスレッドプログラムで䜕が起こっおいるか、メモリアクセスを移動できるこず、同期を行う必芁があるこず、そしお倚くの同期がある堎合はボトルネックが発生するこずを想像するこずは困難です。 これには倚くのツヌルがありたすが、それらを知り、䜿甚できるようにする必芁がありたす。



倚くの開発者は、マルチプロセッサシステムにアクセスできたせん。 Core i7ではなく、少なくずも64プロセッサを搭茉したサヌバヌで同じコヌドを実行するず、たったく異なる問題が発生したす。 2の時間を芁した小さなロックが突然50を占めるようになり、メモリ垯域幅の問題が発生しメモリシステムがリク゚ストに十分に迅速に応答できない、キャッシュが効率的に䜿甚されたせん。 .NET開発者はほずんどの堎合、このようなタスクに盎面するこずさえありたせん。



アンドレむ・アキンシン

.NETでのマルチスレッドプログラミングの耇雑さは、他のプラットフォヌムず同じだず思いたす。 マルチスレッドの䞖界がどのように機胜するかを理解する必芁がありたす。 同期プリミティブず同時デヌタ構造に関しおは、.NETではこれで十分です。 さらに、async / awaitがC5に登堎したした。これにより、マルチスレッドコヌドを矎しく理解しやすい方法で蚘述できたす。



ニキヌタ・ツカノフ

通垞、あるスレッドが別のスレッドが所有するデヌタにアクセスできないようにする方法はありたせん。 Rustでは、このために倚少の通垞のシステムが䜜成されたした割り圓おを砎壊したす。 .NETでは、これはすでに非垞に難しいこずではありたせん。䞍泚意やその他の理由により、あるストリヌムから別のストリヌムに䜕かを転送するず、䜙分なものが別のストリヌムに送られるこずがありたす。 そしお、所有者スレッドはそれに぀いお䜕も知らないが、圌らは「この過剰」で働き始めるこずができたす。 この堎合、誰も知らないずころで競合する曞き蟌み芁求が発生したす。 プロゞェクトが成長するに぀れお、プロゞェクトの远跡ず察凊はたすたす困難になりたす。



ドミトリヌ・むワノフ

いい質問です。 私は䜕幎もマルチスレッドをプログラミングし、人々にそれを行う方法を教えおきたしたが、私はそれを自分で理解しおいたせん。 おそらく、䞻な課題は最䞊䜍レベルで発生したす。倧芏暡な開発者チヌムず倧芏暡な補品に適したモデルを考え出し、誰もがそれに远随し、このモデルの制限に決しお陥らないこずを願っおいたす。



Roslynチヌムは、マルチスレッド盞互䜜甚のトランザクションモデルを䜿甚するこずを決定し、メモリりォヌルにぶ぀かりたした。 悲芳的なロックず読み取り/曞き蟌みロックモデルでは、読み取りロックが長時間リリヌスされ、スムヌズな転倒に盎面したす。



特効薬はなく、新しく絡み合った俳優でさえも節玄したせん。HelloWorldはうたく機胜したすが、実際にはすべおがより耇雑です。



高性胜なコヌドを曞くために䜎レベルの詳现を理解する必芁がありたすか、たたは珟代のフレヌムワヌクがこの必芁性を排陀したすか



サヌシャ・ゎヌルドスタむン

配信しないでください。 唯䞀の質問は、どの皋床必芁かです。 アセンブラヌの読み取り、メモリモデル、プロセッサの動䜜方法の理解が必芁ですか 暙準的なヒント-䜜業䞭のレベルより少なくずも1぀䞋のレベルを理解したす。 .NETで䜜業しおいる堎合は、OS、ランタむム、GC、フレヌムワヌクの仕組みを理解する必芁がありたす。 これがないず、問題を芋぀けたずしおも、それを修正する方法がわかりたせん。



アンドレむ・アキンシン

プログラマヌが解決するタスクに䟝存したす。 90の時間、車から最倧限の力を匕き出すタスクはありたせんが、プログラマヌはバグのない信頌性の高い、読みやすいコヌドを確保するこずを怜蚎する必芁がありたす。 問題が発生した残りの10の堎合たたは、問題が明確に発生するず掚枬したす、それらを解決しようずしたすが、はい、すべおが内郚でどのように発生するかを知る必芁がありたす。



倚くの人々は、この人生で䜕が起こっおいるのか理解せずにパフォヌマンスの問題を解決しようずしたす圌らは間違ったベンチマヌクを䜜り、曲がりくねったプロファむルを䜜成し、物事を遅くし、それに倚くの䜜業時間を費やす奇劙なコヌドを曞きたす。 これらの10のパフォヌマンスクリティカルなケヌスにうたく察凊するには、すべおが内郚にどのように配眮されおいるかに぀いお倚くを知る必芁がありたす。



ニキヌタ・ツカノフ

抜象化の問題は、それらがリヌクする傟向があるため、チヌムには、すべおが内郚でどのように機胜するかを理解しおいる1人が必芁なこずです。 数孊をよく知っおいる人でも同じです。 埓来の䜎レベルの問題は、メモリリヌク、ネむティブコヌドの䟋倖、ヒヌプの砎損です。



ドミトリヌ・むワノフ

私の意芋では、.NET゚ンゞニアは、少なくずもプロセッサずプロセッサキャッシュの動䜜、分岐予枬の動䜜の少しを理解し、アレむずディスクぞのシリアルアクセスが垞に䞊列よりも高速に動䜜する理由を理解する必芁がありたす。



「スロヌダりン」した堎合はどうすればよいですか 最初の2-3ステップは䜕ですか



サヌシャ・ゎヌルドスタむン

掚枬なし。 ツヌルを実行し、プロセスで䜕が起こっおいるかに぀いおの情報を取埗する必芁がありたす。 メモリ、CPU、スレッドの数を確認しおください。 珟圚、倚くの無料のナヌティリティがありたす。 その埌、倚数のメ゜ッドがありたす。 私のお気に入りはUSE䜿甚率、飜和、゚ラヌです。 Linuxパフォヌマンスの゚キスパヌトであるBrendan Greggによっお発明されたした。 䜿甚率ずは、リ゜ヌスCPU、メモリ、ディスクなどごずに䜿甚量を決定する必芁があるこずを意味したす。 飜和-これらのすべおのリ゜ヌスに぀いお、たずえば、䞀床に1぀のディスクから30個のファむルを読み取るかどうかなど、サブスクリプションが過剰かどうかを刀断する必芁があるこずを意味したす。 ゚ラヌ-プログラム内の゚ラヌの数。 その埌、䜕かを最適化できたす。プロセッサを远加するか、コヌドを改善したす。 それは䞀般的です。



アンドレむ・アキンシン

最初に行うこずは、䜕が正確に遅くなるかをプロファむルし理解するこずです。 非垞によくある間違いは、プロファむリングなしの最適化です。 ボトルネックが芋぀かったら、次の質問は「コヌドのこのセクションの速床が䜎䞋するのはなぜですか」ずいう質問を自問するこずです。 ここでは、本圓に倚くの知識が必芁な堎合がありたす。どの芁因が本圓に重芁かを掚枬し、それらのみを確認する必芁がありたす。そうしないず、プログラマヌが䞍必芁な䜜業に倚くの時間を費やす危険がありたす。 そしお3番目のステップは、問題を修正し、プログラムが実際に高速に動䜜するこずを慎重に確認するこずですたた、最適化䞭に䜕も䞭断されなかったこずも確認したす。



ドミトリヌ・むワノフ

クラシックでは、プロファむラヌを䜿甚しおボトルネックを芋぀けお修正するこずをお勧めしたす。 しかし、すでにこれを数回行っおいる堎合、率盎に蚀っおボトルネックは残っおおらず、数行修正するこずでプログラムを数回スピヌドアップするこずはできたせん。 これらの堎合には、アプロヌチを修正する必芁がある堎合がありたす。たずえば、コヌドによっおAssert'esを挿入し、割り圓おられた時間内に操䜜が完了するようにしたす。 そしお、チヌムの各メンバヌに、自分の責任範囲に該圓するパフォヌマンスアサヌションを修正するよう匷制したす。 たた、メモリトラフィックを確認しお、それずの戊いを開始するこずも圹立ちたす。 安党でない堎所に行くこずさえ可胜です。



パフォヌマンスの問題を探す際にお気に入りのツヌルは䜕ですか



サヌシャ・ゎヌルドスタむン

Windowsでは、パフォヌマンスカりンタヌから開始する必芁がありたす。 その埌、状況に䟝存したす。 倚くの問題はPerfViewでしか解決できたせんが、倧きな芖芚化の問題がありたす。 ちなみに、Visual Studio Profilerは非垞に優れおいたす。ずころで、スタンドアロンバヌゞョンがありたす。 dotMemoryたたは.NET Memory Profiler –メモリプロファむリング甚。



アンドレむ・アキンシン

私はBenchmarkDotNetナヌティリティのメンテナヌです。 このラむブラリの最新バヌゞョンは既に安定しお動䜜しおおり、ベンチマヌクのための十分な機䌚を提䟛しおいたす。 残念ながら、むンタヌネットの倚くの人々は、ストップりォッチず数サむクルに基づいお、独自の自家補ベンチマヌクを垞に䜜成しようずしおいたす。 同時に、圌らはすべおの段階で圌らが気付いおいない問題に囲たれおおり、実隓の結論を完党に台無しにする可胜性がありたす。 しかし、これは問題の䞀郚にすぎたせん。すべおのレヌキを奇跡的にパスし、この特定の状況で、実際に有甚なものを枬定する正しいコヌドを曞くこずができたす。 ただし、スタゞオではデフォルトでこの構成が遞択されおいるため、初心者のパフォヌマンス゚ンゞニアは2人に1人しかDEBUGでベンチマヌクを開始したせん。



これにより、枬定倀が完党に台無しになる可胜性があるこずを説明する䟡倀はありたすか。 BenchmarkDotNetは、ナヌザヌにデバッグ蚭定ずアタッチされたデバッガヌを倧きな赀い文字でscり、䞀般的なベンチマヌク手法に準拠し、適切な加熱を行い、各プロセスを異なるプロセスで数回実行し、異なる環境を比范し、統蚈を考慮するなどを可胜にしたす 珟圚、プロゞェクトの呚りにコミュニティが集たっおおり、ラむブラリは倚くのパフォヌマンス研究にずっお䟿利で人気のあるツヌルになり぀぀ありたす。



プロファむリングずしお、JetBrains補品のdotMemoryずdotTraceをお勧めしたす。 私は頻繁にそれらを䜿甚し、私は本圓に、それらが本圓に奜きです。



ドミトリヌ・むワノフ

すべおのツヌルdotTrace、dotMemory。 ほずんどすべおに十分です。 sys内郚ナヌティリティを芋る必芁がある堎合がありたす。



.NET Performanceを読んで芋るこずをお勧めしたすか



サヌシャ・ゎヌルドスタむン

オンラむンには倚くの資料があり、耇数サむトに関する私のコヌスがありたす。Microsoft開発者の叀いブログRico Mariani、Chris Bru、Vance Morrisonには非垞に倚くの情報がありたす。 本に぀いお私の本Pro .NET Performanceがありたすが、新しい本がありたす -Ben Watsonの "High Performance .NET Applications"です。 たた、非垞に興味深いこずに曞かれおいたす。 さらに、.NETデバむスに぀いお䜕かを知り、理解する必芁がありたす。 Cを介した叀兞的な本CLRがありたす。 少し時代遅れですが、䟋倖やデリゲヌトがどのように機胜するかなど、いく぀かのポむントは他のどこにも蚀及されおいたせん。



アンドレむ・アキンシン

アルゎリズム、デヌタ構造、䜿甚するプラットフォヌムに぀いおの基本的な知識がなければ、私は䞊䞋に移動し、CPUレベルに移動したせん䞀郚の人はそうしようずしおいたす。 .NETによるず、同じRichterを読んで、基本クラスがどのように機胜し、なぜそれらが優れおいるのかを理解できたす。 ランタむムデバむスを理解するこずは非垞に重芁です。GCの仕組み、クラスの構造ずの違い、JITコンパむラずは䜕かなど。



さらに、最新のハヌドりェア、特にIntelプロセッサ少なくずも䞀般的にはがどのように機胜するかを理解しおおくずいいでしょう。 これに関しお、むンタヌネットには倚くのリ゜ヌスがありたすが、これは非垞に読みにくいこずがよくありたす。倕方には本を読んでCPUデバむスの詳现を把握するこずはできたせん。



ただし、パフォヌマンスに特化しおいないが、䌁業で働いおいる人はこれを必芁ずしたせん。 私はそのような人々に䞀般的な博孊を広め、芖野を広げるよう勧めたす。 この点で、DotNextのような䌚議に出垭するこずは玠晎らしいこずです。 私自身は、専門的に行っおいない分野のレポヌトを芋るのが倧奜きです。 いずれにせよ、私はプログラミングのすべおの分野に完党に埓事する時間はありたせんが、少なくずも私は䞀般的な考えを持ち、関連するトピックに぀いお他のプログラマヌず話すこずができたす。 新しい領域に関連する問題を解決する必芁がある堎合は、どの方向から怜玢を開始し、䜕をグヌグル怜玢するかがわかりたす。



ドミトリヌ・むワノフ

Sasha Goldsteinのレポヌトにアクセスしおください:)圌の本を読んでから、パフォヌマンスの最適化を必芁ずするタスクを必ず実行しおください。そうしないず、脳は情報を䞍必芁に単玔に砎棄したす。



サンクトペテルブルクのDotNextで䜕を話したすか



サヌシャ・ゎヌルドスタむン

プロファむリングツヌルずメモリモデルに関する2぀のレポヌトがありたす。 最初に、PerfViewを䜿甚したす。 分析するパフォヌマンスの問題を含むコヌド䟋を甚意したした。 PerfViewは、ETWテクノロゞヌのフロント゚ンドです。 ちなみに圌女に぀いおは、DotNextに関する別のレポヌトがありたす。 ETWは、ログを収集できるテクノロゞヌです。 Windows、.NET、CLR、ASP.NETの倚くのコンポヌネントがこのログに曞き蟌みたす。 そしお、これらのログを非垞に高速で曞き蟌みたす。 PerfViewは、ETWログの効果的な分析ですCPU、ランタむム、デヌタベヌスアクセス、割り圓おプロファむリング。



2番目のレポヌトは、メモリモデルに関するものです。 メモリモデルは、すべおの高レベル蚀語のすべおのメモリ操䜜の「怖い」名前です。 プログラムが1぀のスレッドで動䜜する堎合、すべおが単玔ですが、倚くのスレッドがある堎合、状況は倉わりたす。 曞き蟌みず読み取りは、指定した順序にならない堎合がありたす。コンパむラは通垞、メモリアクセスの䞀郚を最適化できたす。 プロセッサでも同じです。 そしお、ポヌトがIntelからARMに䜜られるず、すべおのiPhone、Android、たたはPower PCになり、すべおの車で、プロセッサ自䜓がより倚くを蚱可するため、倚くのすべおが機胜しなくなりたす。



Intelが正垞に動䜜する堎合、いく぀かの理論的および実甚的な䟋を瀺したすが、iPhoneで砎損したり、1぀のストリヌムから耇数のストリヌムに切り替えたずきにIntelが切り替わった堎合、このコヌドを芋おいる人はほずんどいたせんそれが問題です。 メモリモデルの埮劙さを分析した埌、正しい同期で正しいマルチスレッドコヌドを構築する方法の䟋に進みたす。



アンドレむ・アキンシン

算術に぀いおお話したす。 単玔な算術匏でプログラマが迷惑な間違いを犯し、その埌数週間にわたっお怜玢されるバグを䜜成する方法を䜕床も芋おきたしたなぜ、そこで数孊の郚分が正しく機胜しないのですか浮動小数点。



算術パフォヌマンスや、数匏を高速化するために数匏で実行できる単玔な倉容に぀いお考える人はさらに少なくなりたす。



たずえば、CPUはハヌドりェアレベルで1぀のスレッドに送られるコマンドも䞊列化できたすが、適切な䞊列化を行うには、適切に蚘述する必芁のある適切なコヌドが必芁です。 ボトルネックが芋぀かり、蚈算を最適化する必芁がある堎合は、远加の知識を適甚しおコヌドを少し工倫するのが理にかなっおいたす。



ニキヌタ・ツカノフ

開発ず展開のためのむンフラストラクチャの芁玠ずしおのDockerに぀いお話す予定です。 マむクロサヌビスを迅速か぀効率的に展開および管理する方法。 たた、DockerでWindows Server Coreを実行する方法に぀いおも説明したす。



ドミトリヌ・むワノフ

Riderは、IdeaずReSharperのハむブリッドです。 共通のリアクティブモデルを䜿甚したす。 アむデアはいく぀かのパラメヌタヌを蚭定し、Rはそれに応答し、レンダリングに必芁なデヌタを蚭定したす。このようなプロセスは数回繰り返すこずができたす。



Rider Frameworkは、タヌゲット蚀語のDSLからのJavaおよび.NETリアクティブラむブラリおよびモデルゞェネレヌタヌです。 DSLはKotlinで蚘述されおいたす。これは、Kotlinの構文機胜により、Groovyスタむルのメタプログラミングが蚱可されおいるためです。 レポヌトはラむブデモになりたす。



私のレポヌトは、アりトプロセスアプリケヌションを䜜成したい人や、リアクティブフレヌムワヌクに関心があり、デスクトップアプリケヌションにリアクティブモデルを䜿甚したい人に圹立぀ず思いたす。






スピヌカヌに質問がある堎合は、ハヌドコアの.NETを受け取り、サンクトペテルブルクの倩気が䜕回、䜕回倉わるかを知りたいず思いたす。6月3日にDotNext 2016 Piterカンファレンスでお埅ちしおいたす。



All Articles