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

Π’ арсСналС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘ имССтся Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ВрСмя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ с высокой Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ. Однако ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ прСобразования этого Ρ‚ΠΈΠΏΠ° Π² числовоС прСдставлСниС ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ контСкста Π·Π°Π΄Π°Ρ‡ΠΈ. ПониманиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры хранСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² миллисСкунды Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания эффСктивного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ матСматичСскиС основы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² ΠΈ особСнности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих процСссов Π² ΠΊΠΎΠ΄Π΅ 1Π‘. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ вычислСнии Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… микросСкундной (Π² пСрСсчСтС Π½Π° миллисСкунды) точности.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ константы

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, опрСдСляСтся приставкой "ΠΌΠΈΠ»Π»ΠΈ-", ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ‹ΡΡΡ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ³ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΠΎΠ΄Π½ΠΎΠΉ стандартной сСкунцС содСрТится Ρ€ΠΎΠ²Π½ΠΎ 1000 миллисСкунд. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ физичСской константой, Π½Π΅ зависящСй ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ настроСк сСрвСра. Π—Π½Π°Π½ΠΈΠ΅ этого коэффициСнта являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для любого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ с Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π°ΠΌΠΈ.

ΠŸΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этой Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π½Π° большиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ стандартныС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹. НапримСр, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΈΠ½ΡƒΡ‚Π΅ содСрТится 60 сСкунд, Ρ‡Ρ‚ΠΎ Π² пСрСсчСтС Π½Π° миллисСкунды Π΄Π°Π΅Ρ‚ 60 000 Π΅Π΄ΠΈΠ½ΠΈΡ†. Π’ ΠΎΠ΄Π½ΠΎΠΌ часС, состоящСм ΠΈΠ· 3600 сСкунд, количСство миллисСкунд достигаСт 3 600 000. Π­Ρ‚ΠΈ числа часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ 5 ΠΌΠΈΠ½ΡƒΡ‚") Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ счСтчики систСмы.

Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ чСловСчСскоС восприятиС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ машинноС врСмя ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² 200 миллисСкунд ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ для высокочастотной Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ систСмы ΠΈΠ»ΠΈ систСмы контроля доступа это цСлая Π²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ 1Π‘-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΠΎ сразу Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ константы для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании констант Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ "магичСских чисСл". ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ 3600000 прямо Π² Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константу ΠœΡΠ’Π§Π°ΡΠ΅ = 3600000. Π­Ρ‚ΠΎ повысит Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΈ упростит ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Ссли Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° расчСта измСнится.

Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠΌ ВрСмя Π² 1Π‘

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ВрСмя ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для хранСния ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ дня. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ 0:00:00 Π΄ΠΎ 23:59:59.999. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ минимальная Π΄ΠΈΡΠΊΡ€Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот Ρ‚ΠΈΠΏ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ контСкстов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ, составляСт ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ΄Π½Ρƒ миллисСкунду. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ врСмя с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ микросСкунды Π±Π΅Π· использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Для получСния числового прСдставлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² миллисСкундах ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° дня (с 00:00:00) Π² 1Π‘ сущСствуСт ряд ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². Π‘Π°ΠΌΡ‹ΠΉ прямой способ β€” использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ синтаксис ΠΌΠΎΠ³ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π’ соврСмСнных конфигурациях часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных подсистСм (Π‘Π‘ΠŸ). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΈ функция количСство миллисСкунд ΠΈΠ»ΠΈ сСкунд, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² 1000 Ρ€Π°Π·.

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

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ 24 часа, Ρ‚ΠΈΠΏ ВрСмя Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ Π”Π°Ρ‚Π° ΠΈΠ»ΠΈ числовоС прСдставлСниС количСства миллисСкунд Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Число.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ конвСртация ΠΈ вычислСния

Рассмотрим практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ пСрСвСсти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ВрСмя Π² количСство миллисСкунд ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ пСрСмСнная ВСкущССВрСмя, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько миллисСкунд ΠΏΡ€ΠΎΡˆΠ»ΠΎ с Π½Π°Ρ‡Π°Π»Π° суток. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ свойством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ дня.

Π’ ΠΊΠΎΠ΄Π΅ 1Π‘ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠœΡ‹ создаСм врСмя Π½Π°Ρ‡Π°Π»Π° дня (ноль часов, ноль ΠΌΠΈΠ½ΡƒΡ‚, ноль сСкунд) ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ привСсти ΠΊ числовому Π²ΠΈΠ΄Ρƒ. Если ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сСкунды, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ умноТаСтся Π½Π° 1000.

ВСкущССВрСмя = ВрСмя(12, 30, 45, 500); // 12:30:45.500

НачалоДня = ВрСмя(0, 0, 0, 0);

РазницаВсСкундах = ВСкущССВрСмя - НачалоДня;

ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹ = РазницаВсСкундах * 1000;

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ 45045500

Однако сущСствуСт Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ, особСнно Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ‚ΠΈΠΏΠΎΠΌ Π”Π°Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Π°Ρ‚Π°ΠΌΠΈ Π² 1Π‘ часто возвращаСтся Π² сСкундах. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ миллисСкунды, Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅. НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π Π°Π·Π½ΠΈΡ†Π°Π”Π°Ρ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ измСрСния Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π½ΠΎ Π½Π΅ всС ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ миллисСкунды Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ.

πŸ“Š Какой способ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 1000 Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ
ВстроСнная функция Π Π°Π·Π½ΠΈΡ†Π°Π”Π°Ρ‚
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° стандартных подсистСм (Π‘Π‘ΠŸ)
Бвойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ВрСмя

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с большими числами миллисСкунд сущСствуСт риск пСрСполнСния, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² срСдах с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ, хотя Π² 1Π‘ Ρ‚ΠΈΠΏ Число ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ достаточной Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ для хранСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π° протяТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ этих Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ внСшниС систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² JSON для Π²Π΅Π±-сСрвисов) стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ потСряна Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ сСриализации Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл.

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π°

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

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ получСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с максимальной доступной Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Π’ 1Π‘ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ функция ВСкущаяДата() ΠΈΠ»ΠΈ Π’Π΅ΠΊΡƒΡ‰Π°ΡΠ£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°ΡΠ”Π°Ρ‚Π°Π’ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…() (Ссли доступна Π² вашСй вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹). Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сам Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ получСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ процСссорноС врСмя, Ρ…ΠΎΡ‚ΡŒ ΠΈ Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½ΠΎ ΠΌΠ°Π»ΠΎΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Ρ€Π΅ ΠΎΡ‡Π΅Π½ΡŒ быстрых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΌΠ΅Π½Π΅Π΅ 1 мс) это ΠΌΠΎΠΆΠ΅Ρ‚ внСсти ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΡƒΡŽ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² 1Π‘ Π² миллисСкундах. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ мощности сСрвСра ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π‘Ρ€Π΅Π΄Π½Π΅Π΅ врСмя (мс) Π€Π°ΠΊΡ‚ΠΎΡ€ влияния
ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ < 1 мс ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ
Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ простого запроса (1 Ρ‚Π°Π±Π»ΠΈΡ†Π°) 10 - 50 мс Π˜Π½Π΄Π΅ΠΊΡΡ‹, объСм Π΄Π°Π½Π½Ρ‹Ρ…
Π—Π°ΠΏΠΈΡΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π±Π°Π·Ρƒ 50 - 200 мс Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹
Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слоТной ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ 500 - 2000 мс Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Π°, Π΄Π°Π½Π½Ρ‹Π΅

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. ВрСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСти, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, искаТая Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСрвСра 1Π‘.

Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ округлСния

Π₯отя Ρ‚ΠΈΠΏ ВрСмя Π² 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ миллисСкунды, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ округлСния, особСнно ΠΏΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· строковых прСдставлСний ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников, Π³Π΄Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, микросСкунды Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL ΠΈΠ»ΠΈ SQL Server). ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ просто отбрасываСт лишниС Π·Π½Π°ΠΊΠΈ послС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ разряда Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части сСкунды, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ накоплСнию ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ цикличСских опСрациях.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся прСдставлСниС Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния. Число 0.1 (ΠΎΠ΄Π½Π° дСсятая сСкунды ΠΈΠ»ΠΈ 100 мс) Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ являСтся бСсконСчной Π΄Ρ€ΠΎΠ±ΡŒΡŽ. ΠŸΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΌ слоТСнии Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибка ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, рСкомСндуСтся ΠΏΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ цСлочислСнныС значСния миллисСкунд для всСх Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… расчСтов, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ отобраТСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠžΠΊΡ€ (ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅) с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. Π Π΅ΠΆΠΈΠΌ округлСния "По арифмСтичСским ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ" ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² часто трСбуСтся просто отбрасываниС лишнСй точности ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ сторону для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ соблюдСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ 0.1 + 0.2 Π½Π΅ Ρ€Π°Π²Π½ΠΎ 0.3?

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

Бинхронизация ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ Π² Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… заданиях

ΠŸΡ€ΠΈ настройкС Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ Π² 1Π‘ часто трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» выполнСния. Π₯отя интСрфСйс настройки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сСкундами ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ, внутрСнняя Π»ΠΎΠ³ΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ для ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ. ПониманиС Ρ‚ΠΎΠ³ΠΎ, сколько миллисСкунд составляСт Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ частоту выполнСния критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… процСссов.

НапримСр, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π½Π΅ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π· Π² полсСкунды для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» 500 мс. Однако стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСр. Блишком частый запуск Π·Π°Π΄Π°Π½ΠΈΠΉ с ΠΌΠ°Π»Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ (ΠΌΠ΅Π½Π΅Π΅ 1000 мс) ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π΅ успССт Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ Π΄ΠΎ старта ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ, вызывая ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² оТидания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†ΠΈΠΊΠ» с ΠΏΠ°ΡƒΠ·ΠΎΠΉ) Π² ΠΊΠΎΠ΄Π΅ 1Π‘ Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅" (пустой Ρ†ΠΈΠΊΠ»), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ процСссор Π½Π° 100%. ВмСсто этого слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ оТидания ΠΈΠ»ΠΈ асинхронныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π³Π΄Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° указываСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Π² миллисСкундах. Π­Ρ‚ΠΎ позволяСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС эффСктивно ΠΏΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ рСсурсы.

β˜‘οΈ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ точности Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4
πŸ’‘

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

ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ

МоТно Π»ΠΈ Π² 1Π‘ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ врСмя с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ микросСкунд?

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами Ρ‚ΠΈΠΏΠ° ВрСмя Π² 1Π‘ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° миллисСкундами. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с микросСкундами Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ врСмя Π² Π²ΠΈΠ΄Π΅ большого Ρ†Π΅Π»ΠΎΠ³ΠΎ числа (количСство микросСкунд ΠΎΡ‚ эпохи), ΠΎΠ΄Π½Π°ΠΊΠΎ это услоТнит Ρ€Π°Π±ΠΎΡ‚Ρƒ с интСрфСйсом ΠΈ стандартными функциями Π΄Π°Ρ‚Ρ‹.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Π½ΠΈΡ†Π° Π΄Π°Ρ‚ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число сСкунд?

Π­Ρ‚ΠΎ происходит, Ссли исходныС Π΄Π°Π½Π½Ρ‹Π΅ содСрТали миллисСкунды. ΠŸΡ€ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΈ Π΄Π°Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ всю Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π½Ρ‹Π΅ сСкунды, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π¦Π΅Π»() ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° вычитания.

Как пСрСвСсти строку "12:30:45.123" Π² миллисСкунды?

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Ρ‚ΠΈΠΏ ВрСмя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ВрСмя() ΠΈΠ»ΠΈ парсинга, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ значСния врСмя 00:00:00.000. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ умноТаСтся Π½Π° 1000, Ссли систСма Π²Π΅Ρ€Π½ΡƒΠ»Π° сСкунды.

ВлияСт Π»ΠΈ часовой пояс Π½Π° количСство миллисСкунд Π² сСкундС?

НСт, физичСская Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСкунды ΠΈ количСство миллисСкунд Π² Π½Π΅ΠΉ (1000) Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ Π²ΠΎ всСх часовых поясах. Часовой пояс влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (сдвиг Π΄Π°Ρ‚Ρ‹/Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), Π½ΠΎ Π½Π΅ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ².