ããã©ã¼ãã³ã¹ãã¥ã¼ãã³ã°ã®ããã«æ®æ®µããã§ãããã¨/Performance Tuning: Daily Practices
ã«ã±ãã·ã§ã®ç¤¾å è¬æ¼ã«ããããã¤ã³ã¿ã¼ãããæ ªå¼ä¼ç¤¾ã®è¤åä¿ä¸éæ°ï¼@fujiwaraï¼ããæããã¾ããããããã©ã¼ãã³ã¹ãã¥ã¼ãã³ã°ã®ããã«æ®æ®µããã§ãããã¨ãã¨ããã¿ã¤ãã«ã§ãå ·ä½çãªå¤±æè«ãç¾å ´ã®æèããã»ã¹ãããã¦ãã¥ã¼ãã³ã°ã®æ¬è³ªã«ã¤ãã¦ã話ãããã ãã¾ããã 社å åãã®å ´ã§ã¯ããã¾ããããè²´éãªã話ãã伺ãã§ããããããæ¬äººã®è¨±å¯ãå¾ã¦å¤é¨åãã«ã¾ã¨ãã¾ããã 彿¥ã¯ãååãè¬æ¼ç·¨ãå¾åã対è«ç·¨ã¨ãã¦æ§æãã対è«ãã¼ãã«ã¯ã«ã±ãã·ã®ããã¯ãªã¼ãã§ããæ¾å±±ãåå ãã¾ããã è¬æ¼ç·¨ï¼ãããã©ã¼ãã³ã¹ãã¥ã¼ãã³ã°ã®ããã«æ®æ®µããã§ãããã¨ã ãªãããã©ã¼ãã³ã¹åé¡ã¯çªç¶ãæ»ããå¼ã¶ã®ã ã°ã©ããæ¹åãããISUCONã§åã£ããããç¬éã¯ããã®ãããæ¥½ããããã®ã§ããã䏿¹ã§ç¾å¨é²è¡å½¢ã§ãµã¼ãã¹ãæ»ãã§ããç¶æ³ã¯ããã£ã¡ã楽ãããªãããã®ã§ããé·å¹´è²ã¦ããµã¼ãã¹ãè½ã¡ããã¨ã¯ããèªåã®
ãããã¡ã¤ãªã³ã°ã¯ãå¹ççãªã³ã¼ãã¨æé©åãããã¡ã¢ãªä½¿ç¨éã§ã²ã¼ã ãå®è¡ããããã«ä¸å¯æ¬ ã§ããã¾ããç¹å®ã®ãã©ãããã©ã¼ã 仿§ãæºããããã«å¿ è¦ãªå ´åãããã¾ããæçµçã«ã¯ãã²ã¼ã ãæ§ã ãªããã¤ã¹ã§ã¹ã ã¼ãºã«åä½ç¢ºèªãããã¨ã§ãã§ããã ãå¹ åºãã¦ã¼ã¶ã¼ã«å±ãããã¨ã«å¿ è¦ãªããã»ã¹ã¨ãªãã¾ãã ãã®e-Bookã§ã¯ãã¼ãã¦ã§ã¢ããã©ãããã©ã¼ã åºæã®ãããã¡ã¤ãªã³ã° ãã¼ã«ã«é¢ããç¥è¦ãæä¾ãã Unity ã¨ã³ã¸ãã¢ãå¤é¨ã¨ãã¹ãã¼ããªã©ãååéã®å°éå®¶ã¨ã®å ±å使¥ã«ãããã®ã§ãã æ¬ã¬ã¤ãã§ã®ä¸»è¦ãã¤ã³ãã¯ä»¥ä¸ã®éãã§ãï¼ Unity 6 é¢é£ã®ãããã¡ã¤ãªã³ã°ãã¼ã«ã®ç´¹ä» (ä¾: Unity ãããã¡ã¤ã©ã¼ãProfile AnalyzerãMemory Profilerããã¬ã¼ã ããã³ã¬ã³ããªã³ã°ãããã¬ã¼ãProject Auditor ãªã©) ã³ã¢ããã©ã¼ãã³ã¹ã®æ¦å¿µã®èª¬æ ã
2025-09-04 / Cloudflare Workers Tech Talks in Hokkaido #1
.NET CLR1æ å ±ãåå¾ããã©ã¤ãã©ãªãæ°å¹´åã«ä½ã£ãã®ã§ãããæ¹ãã¦ä¾¿å©ãªã®ã§å ¬éãã¾ãããä»åã¯.NET CLRç£è¦ã®ã¹ã¹ã¡ã§ãã guitarrapc/ClrProfiler .NET CLRæ å ±ã¨ã¯ EventListenerã¨EventPipeã®ä½¿ãåã EventListener API ClrProfiler Datadogã§å¯è¦å ã¾ã¨ã .NET CLRæ å ±ã¨ã¯ .NETã«ã¯CLR event tracingã¨ããããä»çµã¿ãããã¾ããããã¯ç°¡åã«ããã¨ããã©ã¼ãã³ã¹ã«ã¦ã³ã¿ã¼ã§åå¾ãã¦ãã.NETã¢ããªã±ã¼ã·ã§ã³ã®ã¡ããªã¯ã¹ãWindowsã¨Linux両æ¹ã§ã¤ã³ããã»ã¹åå¾ã§ããããã«ãªãä»çµã¿ã§ãã .NET Core 2.2ããCLRã¤ãã³ããåä¿¡ããããã«EventListenerã¯ã©ã¹å°å ¥ããã¾ãããããã«.NET 3.0以éã¯EventPipeã¹ã¼ã¹ã®ã¤ã³
ä»åã¯C# Advent Calendar 2024ã®20æ¥ç®ã®è¨äºã§ãããã¼ãã¯æååã®æé©åã«ã¤ãã¦ã C#ã«ããã¦æååã表ç¾ããstringåã¯ã¯ã©ã¹ã§ãããçæã®ãã³ã«ãã¼ãã«ã¢ãã±ã¼ã·ã§ã³ãè¡ãããããã©ã¼ãã³ã¹ä½ä¸ã®è¦å ã«ãªããã¡ã§ããã¾ããC#ã®stringã®ä¸èº«ã¯æ´å²ççµç·¯ããUTF-16ã¨ãªã£ã¦ãããUTF-8ãç´æ¥æ±ããã¨ãã§ããªãããã夿ã®éã«ä½è¨ãªãªã¼ãã¼ããããçºçãã¦ãã¾ãã¾ãã ãã®ãããè¿å¹´ã®.NETã§ã¯Spançãæ´»ç¨ãã¦å¹ççãªæååæä½ãè¡ãAPIã夿°è¿½å ããã¦ãã¾ããã¾ããUTF-8ãæ±ãããã®æ©è½ãè²ã ã¨ç¨æããã¦ãã¾ãã ããã§ä»åã®è¨äºã§ã¯ãææ°ã®.NET9ãç¨ãã¦æååæä½ãæé©åããææ³ãç´¹ä»ãã¦ããã¾ããæ®æ®µããç°¡åã«ä½¿ããææ³ãå¤ãã®ã§ãæ¯éã¨ãè¦ãã¦ããã¾ãããã
以ä¸ã®å ¬éè¨æ¸¬ä¼ã§ãã£ããã®ãåå¥ã«è§£èª¬ãã¦ã¿ãã ç´°ãããã¯ããã¯ãå¤ãã®ã ãããããå¯è½ãªéãããã¹ãã¨ã¹ã¯ã·ã§ã§è§£èª¬ããããä½¿ãæ¹ã®è§£èª¬ãä¸å¿ã§ãã©ãããæå³ããããã¯è§£èª¬ããªãã Chrome131æç¹ã®ã¹ã¯ãªã¼ã³ã·ã§ããã§ãå¾ã§èªãå ´åã¯é »ç¹ã«UIãå¤ãã£ã¦ããç¹ã«æ³¨æã大äºãªã®ã¯æå³ã 宣ä¼: ããã御社ã®ãµã¤ãã§è§£èª¬ããä»äºããã£ã¦ãã¾ãã ãã¢ã®URL ããã«æå³ã¯ãªãã仿¥å¶ç¶è¦ã¦ããã ãã§æå³ã¯ãªããé¢ä¿ãªããã¨ãã¸ã©ã³ãã¼ãºã¯æé«ã®ã¢ãã¡ã DevTools ãéã F12 or å³ã¯ãªãã¯ãããæ¤è¨¼ã DevTools > Lighthouse ãã®ç¶æ ã§è¨æ¸¬ ãã®ã¨ããæ°ãããããã¡ã¤ã«ãä½ã£ãããã¦ãå¯è½ãªéã Chromeæ¡å¼µãå ¥ã£ã¦ãªãç¶æ ã«ãããã¨ãChromeæ¡å¼µã«ããå¦çãè¨æ¸¬ã«å«ã¾ãã¦ãã¾ãã Lighthouse ã¬ãã¼ãã®èªã¿æ¹ ç¹æ°é¨åã«ãã¦ã¹
Some other notable examples: Improved SIMD comparisons. dotnet/runtime#104944 and dotnet/runtime#104215 improve how vector comparisons are handled. Improved ConditionalSelects. dotnet/runtime#104092 from @ezhevita improves the generated code for ConditionalSelects when the condition is a set of constants. Better Const Handling. Certain operations are only optimized when one of their arguments is a
C# / .NET ã«ããããããã©ã¼ãã³ã¹æ¹åã® Tips ããå±ããã¾ãã ãããè¦ãã°ãå¹çè¯ã 80 ç¹ãåããã¨ãã§ããããã«ãªãã¯ãã§ãï¼
ä»åã®è¨äºã¯C#ã«ãããæ§é ä½(struct)ã«ã¤ãã¦ã è¤åçãªãã¼ã¿ãæ±ãéãå¤ãã®å ´é¢ã§ã¯ã¯ã©ã¹(class)ãç¨ãããããã¨æãã¾ããããããããã©ã¼ãã³ã¹ãéè¦ãªå ´é¢ããGCã«ããå½±é¿ã大ããUnityãªã©ã§ã¯ãç¶æ³ã«å¿ãã¦ã¯ã©ã¹ã§ã¯ãªãæ§é ä½ã使ç¨ããæ¹ãè¯ããã¨ãããã¾ãã è¿å¹´ã¯C#ã«ããã¦ãããã©ã¼ãã³ã¹ãéè¦ãããããã«ãªããæ§é ä½ãç¨ããããæ©ä¼ãå¤ããªã£ã¦ãã¾ããã¾ãUnityã®DOTSã«ããã¦ããC# Job SystemãBurst Compilerã«æé©åãããã³ã¼ããæ¸ãããã«æ§é ä½ãå¤ç¨ãããã¨ã«ãªãã¾ãã ããã§ã¯æ§é ä½ã«é¢ããåºç¤çãªç¥èãããã¯ã©ã¹ã¨æ§é ä½ã®ã¡ã¢ãªç®¡çã«ã¤ãã¦ãããã¦å®éã«æ§é ä½ãç¨ããéã®æ³¨æãæ´»ç¨æ¹æ³ã«ã¤ãã¦ã解説ãã¦ããããã¨æãã¾ãã ãã ä»åã®è¨äºã調åã«ä¹ã£ã¦è²ã ãªå 容ãè©°ãè¾¼ãã çµæããã¡ããã¡ãã«é·ããªã£ã¦ã¾ãããã®ã
Reactã«ã¯ãããã©ã¼ãã³ã¹æé©åã®ããã®APIãããã¤ãããã¾ããå ·ä½çã«ã¯React.memoãuseMemoãããã¦useCallbackã§ãã React.memoã§å²ã¾ãã颿°ã³ã³ãã¼ãã³ãã¯ãpropsã以åã¨å¤ãã£ã¦ããªãå ´åã«åã¬ã³ããªã³ã°ãæå¶ããã¾ãã ã¾ããuseMemoãuseCallbackã¯ã颿°ã³ã³ãã¼ãã³ãå ã§ã®å¤ã®åè¨ç®ãæå¶ãã广ãæã¡ã¾ãã ãããã¯æé©åã®ããã®ãã¼ã«ãªã®ã§ããéåº¦ãªæé©åããé¿ããããã«åèããè¨èª¬ãããè¦ããã¾ãã ããªãã¡ãã¡ããã¨æ¬å½ã«æé©åã®ããã«å¿ è¦ãªã¨ããã«ã ããããã使ããã¨ãããã¨ã§ãã ç¹ã«ãReact.memoã¯propsã以åã¨å¤ãã£ã¦ãããã©ãããå¤å®ããããã®ãªã¼ãã¼ããããããããuseMemoãuseCallbackãããã¯å¼ã³åºãã®ãªã¼ãã¼ããããããã¾ãã æå³ããªãã¨ããã§React.memo
ãµã¼ãã®ããã«ããã¯ãæ¢ã ãµã¼ããéãæã主ã«ä»¥ä¸ã®4ã¤ãããã«ããã¯ã¨ãªãã CPU使ç¨ç ã¡ã¢ãªä½¿ç¨é ãã£ã¹ã¯I/O TCPã³ãã¯ã·ã§ã³æ° ãã®è¨äºã§ã¯ããããã®ãã¡ã©ããããã«ããã¯ã¨ãªã£ã¦ããããçªãæ¢ããæ¹æ³ã«ã¤ãã¦æ¸ãã ãã¼ãã¢ãã¬ã¼ã¸ãè¦ã ã¾ãã¯ãã¼ãã¢ãã¬ã¼ã¸ãè¦ããã¨ã§ãããã¾ãã«åé¡ãåãåããã ãã¼ãã¢ãã¬ã¼ã¸ã®ç¢ºèªæ¹æ³ã¯load averageãè¦ã¦ã·ã¹ãã ã®è² è·ã確èªããã«æ¸ããã ãã¼ãã¢ãã¬ã¼ã¸ãé«ãå ´å ç¾å¨ã®ãã¹ãã®**ã1. CPU使ç¨çã**, ã2. ã¡ã¢ãªä½¿ç¨çã, **ã3. ãã£ã¹ã¯I/Oã**ãçãã ãã¼ãã¢ãã¬ã¼ã¸ã1以ä¸ã§ããã°è»½ãã1ã3ãããã ã¨ããéãããã以ä¸ã ã¨ããããããã«ããã¯ã®å¯è½æ§ãé«ãã ãã¼ãã¢ãã¬ã¼ã¸ãä½ãå ´å **ã4. TCPã³ãã¯ã·ã§ã³æ°ã**ãããªã¢ã¼ããã¹ããããã«ããã¯ã«ãªã£ã¦ããªããçãã
ãWeb Speed Hackathon 2022ãã¨ãããé常ã«éããWebã¢ããªããã¥ã¼ãã³ã°ãã¦ãããã«é«éã«ããããç«¶ãç«¶æããããã¾ãã ãªã¢ã¼ãåå ã§11æ1æ¥ãã27æ¥ã¾ã§éå¬ããã¦ãã¾ãã ããã§è¨ããé«éãã¨ã¯Core Web Vitalsã®ã¹ã³ã¢ãé«ããã¨ãè¨ããLighthouseã®ã¹ã³ã¢ããã¼ã¹ã«ãã500ç¹æºç¹ã®äºãã§ãã ISUCONã®ããã³ãã¨ã³ãçã§ããã 以åã«ãåã課é¡ã§ãå¦çåããã¨ã社å ï¼ãµã¤ãã¼ã¨ã¼ã¸ã§ã³ãï¼åãããè¡ãããããããã¾ã 500ç¹ãåºãã人ã¯ãã¾ããã ããã§åã¯ãæºç¹ãåºããããã¨æãã忥ãããããããããã©ã¤ã³ã°ãã¦ãããããã®åããé å¼µã£ã¦ãã¾ããã ããã¦ãå æ¥ï¼17æ¥ï¼ãã¤ãã«500ç¹æºç¹ãåºãã¾ããï¼ ãã¶ããã¬ã®ã¥ã¬ã¼ã·ã§ã³ã¯ã¯ãªã¢ãã¦ãããã¯ãã§ãï¼ããéåãã¦ããããã¾ããâ¦ï¼ã èªåã§è¡ããããVisual Re
Great. But now letâs make a small tweak: [Benchmark] public int GetLength() { ITuple t = (5, 6, 7); Ignore(t); return t.Length; } [MethodImpl(MethodImplOptions.NoInlining)] private static void Ignore(object o) { } Here Iâve forced the boxing by needing the object to exist in order to call the Ignore method, and previously that was enough to disable the ability to devirtualize the t.Length call. Bu
Update (2017/06/12): Added BenchmarkDotNet blog post link. There are many exciting aspects to .NET Core (open source, cross platform, x-copy deployable, etc.) that have been covered in posts on this blog before. To me, though, one of the most exciting aspects of .NET Core is performance. Thereâs been a lot of discussion about the significant advancements that have been made in ASP.NET Core perform
ã¯ããã« æ®æ®µã¯ã¹ã¿ã¼ãã¢ããã§BtoB SaaSã®éçºããã¦ããtaroã¨ç³ãã¾ãã ä»åã¯ãReactã®memoåã«ã¤ãã¦èãã¦ããä¸ã§æ±ãã ããªãã§Reactã¯æ¨æºã§Componentãmemoåãã¦ããªããã ããï¼ã ã¨ããçåãè§£æ¶ããããã«ãè²ã ã¨èª¿ã¹ããèãããããå 容ãã¾ã¨ãã¾ããï¼ éä¸ã§renderã®ã¿ã¤ãã³ã°ããmemoåã§årenderãæããããçç±ãªã©ã®åæç¥èã®å¾©ç¿ãå«ãã¦ãã¦ãmemoåã«ã¤ãã¦è©³ãããªãæ¹ãmemoåã®åå¼·ã«ããªãã¨æãã®ã§ããã²ãã²èªãã§ã¿ã¦ãã ããã¼ï¼ ãªããããªçåãæ±ããã®ãï¼ ã¾ãã¯ããããåãã¿ã¤ãã«ã«ãããããªçåãæ±ããèæ¯ã§ãã çåãæ±ãã¾ã§ã®æèããã»ã¹ã¯ãããªæãã§ãã ãårenderãä½åã«èµ°ã£ã¦ã¦ç»é¢ãéãããæé©åããããªã¼ã âãReact.memo()ã使ã£ã¦Componentãmemoåãããï¼ã â
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}