За життя

Занадто швидко

Хоча я власне програмуванням давно вже не займаюсь, для власних потреб іноді пишу якісь малі програмки або скрипти. Один з таких скриптів - SFTP клієнт для завантажування зібраних файлів наших продуктів з build server'а на web server.

Вчора неочікувано помітив, що при завантаженні певного файлу на першій спробі виникає division by zero, а друга проходить нормально. А така помилка в коді (по пам'яті) можлива лише при діленні на розмір файлу, що дорівнює 0. Дивно ...

Поліз розбиратися, а виявилося все набагато смішніше і цікавіше. В кінці завантаження для краси зроблено виведення швидкості завантаження.

До червня білд-сервер і веб-сервер жили в різних кінцях світу. А зараз вони живуть в двох VM на одному залізному сервері.

І от коли рахувалася швидкість завантаження (розмір / час), файл передавався (! по SFTP, з PKI handshake'ом!) менш ніж за GetTickCount granularity (теоретично 1 мс, практично біля 10 мс), звідки і виникало ділення на 0. Що дає мені ще один привід здивуватися, адже за нашими старими вимірами на реальній машині PKI handshake займає біля 10 мс, а тут весь файл розміром 23 Кб передається за швидший час.