Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/bminaiev_blog/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Боря программирует@bminaiev_blog P.24
BMINAIEV_BLOG Telegram 24
Воспроизводимость результатов

Я уже жаловался на то, как сложно измерять скорость программ, потому что слишком много внешних обстоятельств влияет на результат. Сегодня хочу еще раз пожаловаться, но уже на более простую вещь. Сложно писать программы, которые выдают один и тот же результат, если их запустить два раза.

Если программа работает недетерминированно, то поиск ошибок превращается в какой-то кошмар. То баг воспроизводится, то нет. Как понять из-за чего получается разный результат? Если вы пишете на C++, то с довольно большой вероятностью у вас Undefined Behavior, поздравляю. Можно поискать его с разными санитайзерами, иногда помогает.

В Rust таких проблем почти нет, но иногда все равно программы работают по-разному. В такие моменты думаешь, где ты поиспользовал random и забыл об этом. Так вот, два последних раза, когда у меня так было, я сложил какие-то объекты в хеш-таблицу, а потом проитерировался по ней. В Rust хеш-таблицы специально используют разный seed на каждом запуске, и это хорошо. Например, так сложнее подобрать данные, на которых она начнет тормозить. А еще заставляет программистов не закладываться на конкретную реализацию хеш-функций.

В общем с одной стороны хорошо, а с другой — источник недетерминизма, о котором постоянно забываешь. Хочу линтер, который предупредит меня в следующий раз, когда я захочу проитерироваться по хеш-таблице. Или вообще автоматику, которая говорит в каком месте программа работает не так, как в прошлый раз.
👍7👀2



tgoop.com/bminaiev_blog/24
Create:
Last Update:

Воспроизводимость результатов

Я уже жаловался на то, как сложно измерять скорость программ, потому что слишком много внешних обстоятельств влияет на результат. Сегодня хочу еще раз пожаловаться, но уже на более простую вещь. Сложно писать программы, которые выдают один и тот же результат, если их запустить два раза.

Если программа работает недетерминированно, то поиск ошибок превращается в какой-то кошмар. То баг воспроизводится, то нет. Как понять из-за чего получается разный результат? Если вы пишете на C++, то с довольно большой вероятностью у вас Undefined Behavior, поздравляю. Можно поискать его с разными санитайзерами, иногда помогает.

В Rust таких проблем почти нет, но иногда все равно программы работают по-разному. В такие моменты думаешь, где ты поиспользовал random и забыл об этом. Так вот, два последних раза, когда у меня так было, я сложил какие-то объекты в хеш-таблицу, а потом проитерировался по ней. В Rust хеш-таблицы специально используют разный seed на каждом запуске, и это хорошо. Например, так сложнее подобрать данные, на которых она начнет тормозить. А еще заставляет программистов не закладываться на конкретную реализацию хеш-функций.

В общем с одной стороны хорошо, а с другой — источник недетерминизма, о котором постоянно забываешь. Хочу линтер, который предупредит меня в следующий раз, когда я захочу проитерироваться по хеш-таблице. Или вообще автоматику, которая говорит в каком месте программа работает не так, как в прошлый раз.

BY Боря программирует


Share with your friend now:
tgoop.com/bminaiev_blog/24

View MORE
Open in Telegram


Telegram News

Date: |

The optimal dimension of the avatar on Telegram is 512px by 512px, and it’s recommended to use PNG format to deliver an unpixelated avatar. Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. The Standard Channel With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings.
from us


Telegram Боря программирует
FROM American