Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Иво Π‘Π°Π»ΠΌΡ€Π΅

Из всСх описанных стратСгий Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… срСдств ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΊΠΎΠ΄ прилоТСния обСспСчиваСт самый быстрый способ получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… наибольший интСрСс. ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сбора Π΄Π°Π½Π½Ρ‹Ρ… для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ с оснащСния ΠΊΠΎΠ΄Π° прилоТСния простыми срСдствами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ ΠΏΡ€ΠΈ нСобходимости уточняйтС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± основных показатСлях ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² .NET Compact Framework

Π’ .NET Compact Framework вСрсии 1.1 имССтся встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ быстро ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ "Ρ‡Π΅Ρ€Π½ΠΎΠ²ΡƒΡŽ" ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° основС управляСмого ΠΊΠΎΠ΄Π° Π² этой срСдС. Упомянутый ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ обСспСчиваСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ выполнСния прилоТСния Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ тСкстовый Ρ„Π°ΠΉΠ». Π’ этом тСкстовом Ρ„Π°ΠΉΠ»Π΅ содСрТатся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

β€’ Π‘ΡƒΠΌΠΌΠ°Ρ€Π½ΠΎΠ΅ врСмя выполнСния

β€’ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² памяти Π² процСссС выполнСния ΠΊΠΎΠ΄Π°.

β€’ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ сборкС мусора, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² процСссС выполнСния ΠΊΠΎΠ΄Π°.

β€’ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ сгСнСрированных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. (НакладныС расходы, связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅ΠΌΡ‹Ρ… часто ΠΈ Π±Π΅Π· ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ Π½Π° Ρ‚ΠΎ нСобходимости Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма сущСствСнными )

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, ΠΈΡ… цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сравниваСтС Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ»ΠΈ настраиваСтС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. ВСстируСмыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ слСдуСт Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² собствСнныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС лишнСго ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ основная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… вычислСний ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π½Π° тСстируСмыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈΠ· ΠΊΠΎΠ΄Π° Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, JIT-компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ.

ВСхничСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ рассматриваСмых ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, содСрТатся Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ "Developing Well Performing .NET Compact Framework Applications" ("Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET Compact Framework") Π½Π° Web-сайтС http://msdn.microsoft.com.

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ указанная ΡΡ‚Π°Ρ‚ΡŒΡ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π»Π°ΡΡŒ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ URL-адрСсу:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/netcfperf.asp

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π° Π½Π° основании ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ; этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Ρ‚Π°ΠΊΠΆΠ΅ заслуТиваСт прочтСния.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для измСрСния характСристик ΠΊΠΎΠ΄Π°

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это искусство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒΡΡ с ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ инструмСнт, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ быстро ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСрСния. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… для количСствСнной ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΡ… функционирования.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π² листингС 7.1 ΠΊΠΎΠ΄ прост Π² использовании ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ нСбольшиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, благодаря Ρ‡Π΅ΠΌΡƒ Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ лишь ΠΊ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования Π² качСствС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ срСдства тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ смоТСтС быстро ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ характСристики своих ΠΊΠΎΠ΄ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ быстро ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполняСтся Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ участок Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ примСнСния Π½ΠΎΠ²Ρ‹Ρ… стратСгий. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ для быстрого сравнСния эффСктивности Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ соотвСтствуСт вашим запросам. Π’Π°ΠΊ, Ссли для Ссли для настройки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ заполнСния иСрархичСского списка Π² элСмСнтС управлСния TreeView трСбуСтся Ρ‚Ρ€ΠΈ сСкунды, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала заполнялись лишь ΡƒΠ·Π»Ρ‹ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅Π³ΠΎ уровня, Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ² ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΎΡΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ врСмя ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ лишь Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π² этом Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° основании Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ ΠΎΡ†Π΅Π½ΠΎΠΊ качСства прилоТСния, прСдоставляСмых ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

Листинг 7.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ…Ρ€ΠΎΠ½ΠΎΠΌΠ΅Ρ‚Ρ€Π°ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

using System;

internal class PerformanceSampling {

 //Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ количСство

 //тСстовых ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², Ρ€Π°Π²Π½ΠΎΠ΅ 8, прСдставляСтся достаточным для

 // Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв

 const int NUMBER_SAMPLERS = 8;

 static string[] m_perfSamplesNames = new string[NUMBER_SAMPLERS];

 static int[] m_perfSamplesStartTicks = new int[NUMBER_SAMPLERS];

 static int[] m_perfSamplesDuration = new int[NUMBER_SAMPLERS];

 //ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ‚Π°ΠΊΡ‚ΠΎΠ² систСмных часов

 //для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°

 internal static void StartSample(int sampleIndex, string sampleName) {

  m_perfSamplesNames[sampleIndex] = sampleName;

  m_perfSamplesStartTicks[sampleIndex] = System.Environment.TickCount;

 }

 //ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ‚Π°ΠΊΡ‚ΠΎΠ² систСмных часов

 //для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°

 internal static void StopSample(int sampleIndex) {

  int stopTickCount = System.Environment.TickCount;

  //Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π°ΠΊΡ‚ΠΎΠ² систСмных часов сбрасываСтся Π² ноль ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 24,9 дня

  //(Ρ‡Ρ‚ΠΎ соотвСтствуСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°ΠΌ миллисСкунд).

  //Π­Ρ‚Π° маловСроятная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ принята Π½Π°ΠΌΠΈ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

  if (stopTickCount >=m_perfSamplesStartTicks[sampleIndex]) {

   //ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ этот ΠΊΠΎΠ΄

   m_perfSamplesDuration[sampleIndex] = stopTickCount - m_perfSamplesStartTicks[sampleIndex];

  } else {

   //Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ‚Π°ΠΊΡ‚ΠΎΠ² "ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΎ" Ρ‡Π΅Ρ€Π΅Π· ноль,

   //ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΡƒΡ‡Π΅ΡΡ‚ΡŒ

   m_perfSamplesDuration[sampleIndex] = stopTickCount + (int.MaxValue - m_perfSamplesStartTicks[sampleIndex]) + 1;

  }

 }

 //Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ тСстового ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°

 //(Π² миллисСкундах)

 internal static int GetSampleDuration(int sampleIndex) {

  return m_perfSamplesDuration[sampleIndex];

 }

 //Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΡ‚Π΅ΠΊΡˆΠ΅Π³ΠΎ тСстового

 //ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π² сСкундах

 internal static string GetSampleDurationText(int sampleIndex) {

  return m_perfSamplesNames[sampleIndex] + ": " +

   System.Convert.ToString((m_perfSamplesDuration[sampleIndex] /(double) 1000.0)) +

   " сСкунд.";

 }

}

HA Π—ΠΠœΠ•Π’ΠšΠ£

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ .NET Compact Framework утвСрТдаСтся, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойства .TickCount Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС 500 мс (0,5 сСкунды). Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ достигаСтся нСсколько Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (ΠΌΠ΅Π½Π΅Π΅ 100 мс, ΠΈΠ»ΠΈ 0,1 сСкунды), Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅. Π’Π°ΠΌ придСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Если окаТСтся, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ счСтчик с Π±ΠΎΠ»Π΅Π΅ высоким Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² Π½Π΅Π³ΠΎ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ собствСнным ΠΊΠΎΠ΄ΠΎΠΌ, для получСния доступа ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ систСмным счСтчикам. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаС возмоТностСй ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ достаточно, Π° Π² силу своСй простоты ΠΎΠ½ оказываСтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для использования Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° измСрСния трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ быстро.

Листинг 7.2. ВСстовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ использованиС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²

private void button1_Click(object sender, System.EventArgs e) {

 const int TEST_SAMPLE_INDEX = 2; //Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ любоС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅

                                  //Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса

 //ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅

 PerformanceSampling.StartSample(TEST_SAMPLE_INDEX, "TestSample");

 //ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ сообщСний

 System.Windows.Forms.MessageBox.Show("Для прСкращСния измСрСния Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ OK");

 //ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅

 PerformanceSampling.StopSample(TEST_SAMPLE_INDEX);

 //ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

 System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(TEST_SAMPLE_INDEX));

}

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ надСТности Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ

1. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ эмпиричСским ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‡Π΅ΠΌ большС Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ события, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ измСряСтС, Ρ‚Π΅ΠΌ мСньшС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ошибка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ сравниваСтС Π΄Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, для выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 0,5 сСкунды, Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ 10 Ρ€Π°Π· ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° 10.

2. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экспСримСнт нСсколько Ρ€Π°Π·, ΡƒΠ±Π΅ΠΆΠ΄Π°ΡΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² достаточной стСпСни Π±Π»ΠΈΠ·ΠΊΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.