Mar. 9th, 2021

APython

Mar. 9th, 2021 01:38 pm
amarao: (Default)
troll mode:

Специальный интерпретатор питона, написанный на ансибле с помощью конечного автомата на хэндлерах. В начале делается set_fact для code с содержимым желаемого python-файла, а дальше он парсится с помощью набора when и рекурсивных include, потом исполняется посредством хэндлеров от include_role, которые делают notify/listen друг другу, разумеется, вместе с when. В некоторых случаях приходится делать в качестве таски для хэндлера include_role (так, например, всё IO делается).

В принципе, внутри кода можно написать import remote_pdb; remote_pdb.set_trace() и тогда ансибл в хэндлерах будет поллить сокеты и давать repr-шелл внутрь этого питона.

Enjoy your debugging.

Для слабых духом можно предложить транспайлер из питона в ансибл py2ansible - всё то же самое, но уже транспилированное в плейбуки. Вот тогда можно будет программировать на ансибле.

fast random

Mar. 9th, 2021 06:07 pm
amarao: (Default)

Когда-то Олег мне подсказал функцию быстрого псевдорандома:

        factor ^= factor << 13;
        factor ^= factor >> 17;
        factor ^= factor << 5;

Когда я был в недрах piston'а и очень далеко от criterion'а, я не мог её проверить. Сейчас (научившись работать criterion'ом и cargo asm'ом) я могу с уверенностью сказать, что функция эта много медленее, чем кажется. Причина - она не конвейеризируется. Если тело цикла большей частью состоит из рандома (и записи оного), то мы получаем, что каждая следующая строка зависит от предыдущей, и это полностью тормозит конвейер (за вычетом инструкций цикла).

По моим замерам одна инструкция примерно на 70% быстрее, чем три (т.е. трёхкратная разница), и ~25x кратная по сравнению с отсутствием математики (но тут могут быть какие-то ещё спецоптимизации).

Я планирую попробовать сделать рандом конвейеризируемым.

Мораль: viva Criterion.

Profile

amarao: (Default)
amarao

August 2025

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 16th, 2025 09:25 pm
Powered by Dreamwidth Studios