четверг, 9 апреля 2015 г.

[prog.sobjectizer] Продолжение флеш-моба по мотивам md5_bruteforce :)

Как заметил ув.тов.TheDeemon, представив свое решение md5_bruteforce на D, вокруг задачки образовался небольшой флешмоб :)

Ну и раз пошла такая пьянка, то можно взглянуть на мой вчерашний вариант другими глазами. В нем я преследовал цель сделать вариант, в котором рабочий агент делает запрос следующего диапазона у генератора диапазонов.

Однако, этот вариант имеет свои накладные расходы. Как по объему исходного кода (лишний сигнал get_next_range, агент-генератор), так и по времи работы, т.к. рабочему агенту приходится какое-то время ожидать, пока ему выдадут новый диапазон вместо обработанного.

Если же всю работу выдать рабочему агенту сразу, то можно и размер исходника несколько сократить, и в скорости работы выиграть. Поэтому появился вот такой вариант: md5_bruteforce-thedeemon-like (исходник в svn) ;) Там нет генератора и всю нагрузку рабочий агент сам себе создает сразу, как только начинает работать внутри SObjectizer Environment.

Ну а потом подумалось, что можно вообще сделать хитрый трюк: а почему бы не поручать обработку каждого диапазона отдельному агенту? Т.е. насоздавать сразу кучу агентов, запустить их на пул потоков и пускай они там работают :)))

Сказано -- сделано. Вот и этот вариант: md5_bruteforce-separate-agents (исходник в svn).

Оба эти варианта работают почти на секунду быстрее вчерашнего (5.9s против 6.7-6.9s).

Комментариев нет: