Зіткнення наносекундних позначок часу є поширеними
Зіткнення міток часу на наносекундах є поширеними (evanjones.ca)
Наносекундні мітки часу є поширеними
про | архів
[ 2023-липень-20 17:39 ]Мені було цікаво: як часто наносекундні мітки часу збігаються в сучасних системах? Відповідь така: дуже часто, як 5% усіх зразків, при зчитуванні годинника на всіх 4 фізичних ядрах одночасно. Тому я вважаю, що небезпечно припускати, що необроблена наносекундна позначка часу є унікальним ідентифікатором.
Я написав невелику тестову програму, щоб перевірити це. Я використовував Go, який записує як «абсолютний» час, так і відносний час «монотонного годинника» з кожним викликом time.Now(), тому я порівняв як відносну різницю між послідовними часовими мітками, так і абсолютні часові позначки. Як і очікувалося, поведінка залежить від системи, тому я бачу дуже різні результати в Mac OS X і Linux. У Linux в межах одного потоку абсолютний і монотонний час завжди збільшується. У моїй системі мінімальний приріст становив 32 нс. Між потоками приблизно 5% абсолютного часу були точно такими ж, як і в інших потоках. Навіть з 2 потоками в 4-ядерній системі близько 2% часових позначок зіткнулися. У Mac OS X: абсолютний час має мікросекундну роздільну здатність, тому є астрономічне число колізій, коли я повторюю цей самий тест. Навіть у межах потоку я часто спостерігаю, що монотонний годинник не збільшується.
Якщо вам цікаво, перегляньте програму тестування на Github.
Наносекундні мітки часу є поширеними
про | архів
[ 2023-липень-20 17:39 ]Мені було цікаво: як часто наносекундні мітки часу збігаються в сучасних системах? Відповідь така: дуже часто, як 5% усіх зразків, при зчитуванні годинника на всіх 4 фізичних ядрах одночасно. Тому я вважаю, що небезпечно припускати, що необроблена наносекундна позначка часу є унікальним ідентифікатором.
Я написав невелику тестову програму, щоб перевірити це. Я використовував Go, який записує як «абсолютний» час, так і відносний час «монотонного годинника» з кожним викликом time.Now(), тому я порівняв як відносну різницю між послідовними часовими мітками, так і абсолютні часові позначки. Як і очікувалося, поведінка залежить від системи, тому я бачу дуже різні результати в Mac OS X і Linux. У Linux в межах одного потоку абсолютний і монотонний час завжди збільшується. У моїй системі мінімальний приріст становив 32 нс. Між потоками приблизно 5% абсолютного часу були точно такими ж, як і в інших потоках. Навіть з 2 потоками в 4-ядерній системі близько 2% часових позначок зіткнулися. У Mac OS X: абсолютний час має мікросекундну роздільну здатність, тому є астрономічне число колізій, коли я повторюю цей самий тест. Навіть у межах потоку я часто спостерігаю, що монотонний годинник не збільшується.
Якщо вам цікаво, перегляньте програму тестування на Github.
What's Your Reaction?
![like](https://vidianews.com/assets/img/reactions/like.png)
![dislike](https://vidianews.com/assets/img/reactions/dislike.png)
![love](https://vidianews.com/assets/img/reactions/love.png)
![funny](https://vidianews.com/assets/img/reactions/funny.png)
![angry](https://vidianews.com/assets/img/reactions/angry.png)
![sad](https://vidianews.com/assets/img/reactions/sad.png)
![wow](https://vidianews.com/assets/img/reactions/wow.png)