Neural Network and Password Cracking

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by Petr Sitkin, 20 May 2020.

  1. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Сделал тест по конрольным точкам.Заняло более 3 суток.На этот раз увеличил диапазон для обучения до 2мб новых данных из того же vkmod.
    Параметры train: learning_rate=1e-5 -b 64 lmin 8 lmax 14 -n 200000.
    С каждой контрольной точки,генерировал такое же количество строк как vkmod.
    Видно как снижается эффективность ближе к началу.

    Тест не совсем полный,но уже понятно,что начальные конторльные точки менее эффективны.
    Как писалось ранее,параметр -n (количество итерайций) увеличивать более 200000 нет особого смысла.Возможно этот параметр следует убавить.Что сэкономит время.
    Но нужно проводить не один подбный тест.И тогда станет ясно,насколько можно снизить -n.
    -c (--critic-iters) Возможно стоит поиграться.Иногда и finetuning даёт неожиданные результаты.Пока не пробовал.

    Конечно же нужно увеличивать входной диапазон.Тоесть тренеровать нужно словарь гораздо большего размера.
    При этом нужна очень хорошая выборка с разных словарей а не с одного.Нужна максимально возможная разнообразность входных данных.Что неизбежно приведёт к довольно большому объёму.
    Ну как и писал ТС выше,до 500мб возможно будет оптимально.Но время обучения....
    Возможно всё таки стоит подмешивать цифры.Хоть те же даты в 4 6 8 значных форматах.Это не много,но не известно как это будет обрабатываться.
    Будут ли например они комбинироваться с другими строками?

    Тут бы по хорошему, генерить словари коту в stdin, но скорость генерации так низка,что ничего не выходит.Генер даже одну видяху не может прокормить.Даже с правилами.
    Кот жалуется на слишком медленный поток данных.
    А было бы не плохо,если бы это работало.Так как на данный момент,я не вижу особого смысла хранить такие словари на винте.
    Проще наверное всё таки было бы сохранять модель,и при необходимости её использовать.

    vkmod 361мб 36864000 строк 13593 паролей найдено с правилами OneRuleToRuleThemAll (это топовая выборка из топовых наборов правил)

    gan200000_b256 _l14_ 36035393 8655 OneRuleToRuleThemAll и далее....
    gan195000_b256_l14_36864000 8245
    gan190000_b256_l14_36035393 8517
    gan185000_b256_l14_36035393 8336
    gan180000_b256_l14_36035393 8460
    gan175000_b256_l14_36035393 8233
    gan170000_b256_l14_36035393 7663
    gan165000_b256_l14_36035393 8625
    gan160000_b256_l14_36035393 8438
    gan155000_b256_l14_36035393 8397
    gan150000_b256_l14_36035393 6936
    gan145000_b256_l14_36035393 8316
    gan140000_b256_l14_36035393 7620
    gan135000_b256_l14_36035393 9060
    gan130000_b256_l14_36035393 10452
    gan125000_b256_l14_36035393 7339
    gan120000_b256_l14_36035393 7330
    gan115000_b256_l14_36035393 7698
    gan110000_b256_l14_36035393 7501
    gan105000_b256_l14_36035393 6497
    gan100000_b256_l14_36035393 7757
    gan95000_b256_l14_36035393 6777
    gan90000_b256_l14_36035393 6675

    Тут пропустил часть контрольных точек.Ну ход событий,думаю итак на лицо.

    gan35000_b256_l14_36035393 6580
    gan30000_b256_l14_36035393 6414
    gan25000_b256_l14_36035393 4941
    gan20000_b256_l14_36035393 5089
    gan15000_b256_l14_36035393 5653
    gan10000_b256_l14_36035393 2994
    gan5000_b256_l14_36035393 882

    Собрал все словари с контрольных точек в один. 10.9Гб
    Найдено паролей против многократно меньшего vkmod: 22031
     
    #21 hydra, 25 Jul 2020
    Last edited: 25 Jul 2020
    Petr Sitkin likes this.
  2. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Вопрос очень хороший, как по мне - пароли состоящие только из цифр - все же не имеют смысла. В составе остальных паролей зачастую уже есть даты, дни рождения.. что и так (в достаточной мере) влиет на вывод.
    Code:
    d4d578953afa2f02603f6423b43a6e80:koldtack0312
    2c993fd29a5f48e6b4c3eb166ad44c82:kf4992lancer
    6b1616d51d3ca3f77abf53292b69e1ba:ashi9895820456
    cf1b385116f8a7db79fb4610ed163194:betazaurs28
    397c5300c091ac94327b88a61cadf2ce:862812bally
    061ba18e54ab75ec968a93b0ba35e700:Barbmarie22815
    f0ec1cf290a8f3b0f88c7fdeed097271:imaandma3009
    8160a70327e0364cf197274e12dfad77:mariada153xd
    5ea4a1ddd9970183fd41419b6ad294a1:Gongtuffy1914
    06d3a814d388e2f1256cd795f02dc449:egn101907k
    3f09fdfbdf0a1672d4ded3d03db04c28:2001ab88zyt
    cae5a95ab096b17623acf737c3592825:vernakiroo12
    b0bf3653e0c460c8415a8bd4e737b682:inhi|32414
    daf540ecc6eb5b3dbd426c77958bd02a:Rustambella6
    01b4ba0f74208828edcf64358fab480d:detrudduja3
    027e1ae89d3e7a29452352ea531cea76:samomusto54
    afbffee9f93215020f2b89e7e824c345:wsliscarl2012
    3a8b38ec46681af5975a5a2c3fb808da:anasgraib33
    52df33bc6ddc04f847643e3457cc7876:2043221lyss
    2982ad8e453e971409e25223b7bbd699:myapoolove03
    a9974685786331e36172ab53cae2876d:MARCE3LL33ES
    e7e166e8d70f218da8bbf0e5f917749f:mynoubr811
    79fac5e23b027b9bacf4ba2dcc1337c8:cen09ca407
    8f7f27e7aae4c091fb382a3f212291ff:aingheemdan
    a31e1f78ebd252de358b789dad9e927f:N20campui
    ed68935a25d7082ba92bdf1784ef7bd5:K26337jms
    4985d9a2f3cfe90320db9e214c39b01e:diagossa1370
    58b2fca0060d301da4f35023ff7bb4d5:roodia19abr
    5be0653e17a3513a72d4c9f895bdd1df:Tk199795224
    166f8ee0329818f9a11a73e14c0c251a:Paomolesta2015
    2d7f4a1ef58dd728ce17e4e01d5c0ba0:Sablongalur17
    2ece5b88d20bb2f44d38cf9de96a20e0:Gmangelr25
    9e4d5efa6761209009f892361f6b057a:pacoolindo2207
    50559eeac346581282d397644350a258:tindaver250714
    c5e5a47a7afd202dcc38ba7143a0def9:Mommepropen
    c86ac21ca5712ce125fced6bab9a9ab8:LEMISTHER79
    a821b719cd732e3c883bed39008cb461:Jmasd051695
    6c543e7b179299da62bf4658ad5a2345:ocaroley13288
    da2a116fde05a16af4147de270fd0c69:funameak1404
    34efac1b5873dc69b64f3d846fa8a9da:pamieglogen
    1e2d5e3061efe1d3e0867480748d183e:sonanagu548
    f8c2cb6ba1b219d3b5e8ca0a5eebdfce:lekziilovem
    ab8422457c9f74072cf20fb22c55ab66:jwidsandle
    b5e282c7859140e68aebd1528e183016:j68j88sham
    df82bd361c23e28e694a6538adbc20d2:mishmaria12M
    ce16668744ba4e9418a0b1cdc458ebf4:pettinolove04
    8f9b1eccf8f5cf69e256a72aefe00f63:[email protected]
    4cc30d1a013c1ea935c91dd0f9a00219:shalen70rma
    23fd6258d111f209a1e9e818247fd024:ytrbngQ12
    088c6fc76d3de7d7ae332f3085622e77:Cholomina7886
    c0dd865d71b5fdd7362d57c61c9adcbb:Lovereu4eva*
    b2151c75cce5e04d109661c6c7a57f43:lichandaxe1405
    797fc6ed3487bc3aa8245f4721d3280c:asatog432100
    ea2d7649c75f5ef9b056a2de6027fc4e:NAFKAMACHE
    d071a3c141f31722ea301703e0dbc245:#Rose346621
    634e721bb8785429c65c302831fb0c94:Tisagurrida
    53f3e5de80b0333ea4ba8cd70e94e3ac:titomaro10131
    9f644ac48ca9233bd726fa7b3b434000:thune3ne31998
    78b53bba7abdda84a984a62552bc9b5c:jeisi091325
    
    Эх, было бы отлично.. Думал по началу. Для дела купил 2тб винт с барахолки - складирую на нём. Обработку и действия с нагрузкой на диск - провожу на ssd.
    По поводу нет смысла хранить - не соглашусь - у меня иногда уходит до недели на генерацию, это с учетом 1080ti и 970pro.. терять данные и при необходимости генерировать - очень затратно по времени.
     
    #22 Petr Sitkin, 25 Jul 2020
    Last edited: 25 Jul 2020
    hydra likes this.
  3. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Тут ещё определиться бы с оптимальными настройками.
     
  4. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Не заметил какого-то оптимального значения для всех случаев.
    для себя вынес основные 5 правил:
    1) Словарь чистим хорошо. Дубли, цифровые пароли удаляем. (самый важный этап)
    2) Рандомным образом сортируем. Обязательно! (если при обучении на графиках видите подобные скачки - скорее всего этот пункт пропущен)
    [​IMG] " alt="js1" border="0"></a>
    3) Если Ваша цель исследование - делим словарь в пропорции 70/30 (тренировка/тестирование). Далее можно будет по выводу отследить процент вхождения в словарь для тестирование с той же выборки, но который не участвовал в обучении. (для контроля качества)
    4) то что влияет - вот +- learning_rate которые использую (неплохо показали себя)
    Code:
    gen_train_op = tf.train.AdamOptimizer(learning_rate=0.0001, beta1=0.5, beta2=0.9).minimize(gen_cost, var_list=gen_params)
    disc_train_op = tf.train.AdamOptimizer(learning_rate=0.0003, beta1=0.5, beta2=0.9).minimize(disc_cost, var_list=disc_params)
    для теста можно прогнать с learning_rate=0.001 (но учитуйте, скорость обучение может очень сильно повлиять на выходные данные. Показательность прогона с такими настройками такова - если удовлетворил вывод на 5000-10000 итерации - уменьшаем скорость обучение и приступаем к нормальной тренировке.
    5) Далее это уже finetuning.. который может немного улучшить стабильность
    --layer-dim можно увеличить, но увеличится время тренировки.
    --lambda - можно уменьшать по 1 значению.
     
    #24 Petr Sitkin, 25 Jul 2020
    Last edited: 25 Jul 2020
    hydra likes this.
  5. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    А какие мысли по поводу количества итераций?
     
  6. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Опять же в зависимости от целей. Если потратил тучу времени на очистку-подгонку словаря. То и несколько суток подождать могу. 200 000.
    можно поглядывать на графики (явная нестабильность - уменьшаем скорость обучения), обычно больше 200 000 не имеет смысла.
    Например, твой тест выше показал на 130000 - лучший результат. В идеале бы проверять так на каждом тренировочной модели и генерировать словарь только с лучших точок.
     
    hydra likes this.
  7. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Если я правильно понимаю,это как раз в районе вот этих скачков.Тоже обратил на это внимание.А какова причина такого поведения?
    js4.jpg
     
  8. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    это нормально, возможно сказалась небольшая выборка. Функция потери, оптимизатор.. не всегда улучшают, бывают такие локальные скачки.
    https://www.tensorflow.org/tutorials/keras/overfit_and_underfit
    http://www.deeplearningbook.org/contents/numerical.html
     
    #28 Petr Sitkin, 25 Jul 2020
    Last edited: 26 Jul 2020
    hydra likes this.
  9. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Опять таки по поводу строк состоящих только из букв.Как они обрабатываются?Вероятно так же как и только цифры?Тогда возможно в них тоже нет особого смысла?
    Сделал стату по очищенному словарю rockyou.Без цифр min 5 max 15.Спецсимволы не трогал.
    [*] Length:
    [+] 8: 21% (2536023)
    [+] 7: 17% (2018703)
    [+] 9: 16% (1881645)
    [+] 6: 13% (1558188)
    [+] 10: 13% (1533124)
    [+] 11: 06% (756415)
    [+] 12: 04% (515227)
    [+] 13: 02% (333544)
    [+] 14: 02% (235068)
    [+] 5: 01% (215433)
    [*] Character-set:
    [+] loweralphanum: 51% (5945086)
    [+] loweralpha: 31% (3593460)
    [+] upperalphanum: 03% (401783)
    [+] loweralphaspecialnum: 03% (370689)
    [+] mixedalphanum: 03% (370639)
    [+] loweralphaspecial: 02% (339171)
    [+] upperalpha: 01% (223484)
    [+] mixedalpha: 01% (155495)
    [*] Simple Masks:
    [+] stringdigit: 45% (5247683)
    [+] string: 34% (3972439)
    [+] digitstring: 05% (647612)
    [+] othermask: 04% (486138)
    [+] stringdigitstring: 03% (430840)
    [+] stringspecialstring: 01% (190501)
    [+] stringspecialdigit: 01% (161071)
    [+] stringspecial: 01% (143774)
    [+] digitstringdigit: 01% (124706)
    [*] Advanced Masks:
    [+] ?l?l?l?l?l?l?l?l: 05% (688461)
    [+] ?l?l?l?l?l?l: 05% (601837)
    [+] ?l?l?l?l?l?l?l: 05% (585533)
    [+] ?l?l?l?l?l?l?l?l?l: 04% (517165)
    [+] ?l?l?l?l?l?l?d?d: 03% (420577)
    [+] ?l?l?l?l?l?l?l?l?l?l: 03% (417164)
    [+] ?l?l?l?l?l?d?d: 02% (292547)
    [+] ?l?l?l?l?l?l?l?d?d: 02% (273815)
    [+] ?l?l?l?l?l?l?l?l?l?l?l: 02% (267893)
    [+] ?l?l?l?l?d?d?d?d: 02% (235469)
    [+] ?l?l?l?l?d?d: 01% (215283)
    [+] ?l?l?l?l?l?l?l?l?d?d: 01% (213256)
    [+] ?l?l?l?l?l?l?d: 01% (193284)
    [+] ?l?l?l?l?l?l?l?d: 01% (189977)
    [+] ?l?l?l?l?l?l?l?l?l?l?l?l: 01% (189482)
    [+] ?l?l?l?d?d?d?d: 01% (178383)
    [+] ?l?l?l?l?l?d?d?d?d: 01% (173664)
    [+] ?l?l?l?l?l?l?d?d?d?d: 01% (160719)
    [+] ?l?l?l?l?l?l?l?l?d: 01% (160151)
    [+] ?l?l?l?l?l?d?d?d: 01% (152495)
    [+] ?l?l?l?l?l?l?d?d?d: 01% (132299)
    [+] ?l?l?l?l?l?l?l?l?l?d: 01% (129903)
    [+] ?l?l?l?l?l: 01% (126278)
    [+] ?l?l?l?l?l?l?l?l?l?l?l?l?l: 01% (119310)
    Наблюдается довольно болшая разница по количеству типов строк.Это ведь наверняка влияет на конечное качество выходного словаря.Что если рапределять данные более равномерно?Это даст лучший эффект?

    Поставил тренировать вышеописанный rockyou 110мб.Займёт по приблизительно около 2 суток.
    learning_rate=0.0001 -b 128 -l 15 остальное по дефолту.
    В планах попробовать этот же словарь,но уже с более равномерным распределением типов строк.
     
    #29 hydra, 27 Jul 2020
    Last edited: 27 Jul 2020
  10. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Удаляю строки которые из цифр, чтобы потом при генерации не получать цифровые пароли ои 8 до 12 (пример). Это все я могу перебрать отдельно. Но согласен, возможно цифры от 12-14 символов можно оставлять, которые потом могут дать положительный результат при переборе словарь+правила.
    это скорее всего даст лучший эффект по графикам. Но на практике, как по мне - нет. Распределять равномерно - это в смылсе взять например loweralpha только и на основе этого создавать модель? (идея как по мне - хороша, возможно что если создать 5 моделей из топа Character-set (выше) то это даст свой эффект. (стоит ли оно потраченых усилий?)
    На практике не проверял - но как по мне нелинейность в той степени в которой подаем ее мы сейчас - не мешает обучаться нейросети адекватно.

    Вот тут из-за кулис вылезла архитектура нашей нейросети. Лучшая ли она для нашего дела - вопрос открытый. Возможно стоит попробовать добавить несколько скрытых слоев, нормализацию и тд. красивенько, с умом. (то что пока делал - слишком усложняет сеть, что приводит к очень длительному обучению) в общем - нужно время..
     
    #30 Petr Sitkin, 27 Jul 2020
    Last edited: 27 Jul 2020
    hydra likes this.
  11. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Нет,не совсем так.Брать максимальное количество разных чарсетов,но в чтобы в словаре их было приблизительно одинаковое количество строк.
    ?l?l?l?l?l??d?d?d 04%
    ?l?l?l?l??d?d?d 04%
    ?l?l?l?l?l??d?d?d?d 04%
    Ну и так далее...
    Тут опять бы по хорошему провести более масштабную стату по всем реалпасс словарям,затем объеденить её в одну.И согласно ей конструировать словарь.
     
    Petr Sitkin likes this.
  12. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Вот например:
    ?l?l?l?l?l?l?l?l,688461
    ?l?l?l?l?l?l,601837
    ?l?l?l?l?l?l?l,585533
    ?l?l?l?l?l?l?l?l?l,517165
    Есть ли смысл в содержании такого большого количества однообразных строк?Может лучше выровнять их по минимуму и добавить строк другой,недостающей длинны?
    Опять таки повторюсь.Непонятно как идёт обучение со строками только из букв.
     
  13. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Да.. в слишком большом количестве - смысла не вижу, строки недостающей длинны (из реалпасс) добавить - от этого будет толк. А по поводу как идет обучение со строками только из букв - это по сути как черный ящик(знать точно нельзя, очень много переменных), если веса настроены так, что генератор смог обманывать дискриминатор, то строки там из букв или из состава цифры+буквы тд - разницы нет
     
    hydra likes this.
  14. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Тот самый случай.Но рандомная сортировка была сделана.Возможно где-то попались слишком однообразные по каким-то характеристикам данные?
    js1.jpg
    Выходит что данные до 80000 точки,могут заметно отличаться по харктеристикам,от данных после неё?И нужно будет выбирать как минимум 2 лучшие точки?Впрочем,тесты покажут,что к чему.
     
  15. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    если сортировка сделана и все настройки +- по дефолту - могу предположить, что алгоритм такими скачками нашел локальные минимумы. Можно попробовать увеличить batch-size (2^N 64 128 256..), если позволяет карта.

    трудно ответить значительно ли, иногда графики обучения не совпадают с реальной картиной, только проверять
     
    #35 Petr Sitkin, 28 Jul 2020
    Last edited: 28 Jul 2020
    hydra likes this.
  16. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    Мы проверяем как - нагенерили словарь - взяли реальные хеши - смотрим на количество взломанных. Если количество большое - мы думаем что контрольная точка, параметры - неплохи. и все отлично. Но на самом деле те хеши и их количество взломов не имеют практически ничего общего с качеством нашей модели. Именно деление 70/30 (или другие пропорции 80/20) потом дает нам возможность оценить % вхождения сгенерированных данных в данные для тестирования (70/30) с той же выборки, но которые не участвовали в тренировке модели. И именно это дает нам хоть как-то в реальности оценить модель. И сравнить ее.
    А реальные хеши то уже дальше, и зачастую хорошая модель - может показывать результат реального взлома хуже, нежели средняя модель. (и причин тому может быть множество)
     
    #36 Petr Sitkin, 28 Jul 2020
    Last edited: 28 Jul 2020
  17. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Ну тогда наверное справедливей будет 50/50? И сколько например нужно сгенерить данных с 1 точки (по размеру или количеству строк) для более честного теста?
    Я на крайнем тесте генерил одинаковое количество строк относительно базового словаря.И при таком раскладе тестовые словари проигрывали,хоть по моему мнению и не сильно.
     
  18. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Стоит 128.Но уже с ним стартовало минут 15.Выше пока не пробовал.Но попробую позже.
     
  19. Petr Sitkin

    Petr Sitkin Well-Known Member

    Joined:
    17 Dec 2015
    Messages:
    185
    Likes Received:
    1,638
    Reputations:
    3
    70/30 и 80/20 это не я придумал, это оптимальное отношение к которому пришли исследователи и повсеместно используют. Тоже генерировал одинаковое количестов строк. 10^6 или 10^7 для каждой точки, но это чисто для +- определения оптимальной точки (можно двух) для генерации. А дальше использовать только эту точку (точки) для генерации. Хотя как показывает практика - брать можно точки после 120 000 - 150 000 и они особо отличаться не будут +- несколько процентов. (поэтому это своего рода улучшения, но уже когда все остальное настроено на отлично)
     
    hydra likes this.
  20. hydra

    hydra Elder - Старейшина

    Joined:
    24 Jul 2015
    Messages:
    3,371
    Likes Received:
    36,845
    Reputations:
    73
    Словарь rockyou.Тестировался уже целиком 110мб.Удалены только цифры.
    learning_rate=0.0001 0.0003 -b 128 -l 15 остальное по дефолту.
    Сделал полный тест всех кт.
    rockyou 17366 OneRuleToRuleThemAll

    5000 6781 OneRuleToRuleThemAll и далее...
    10000 7761
    15000 7959
    20000 9472
    25000 10177
    30000 10769
    35000 12080
    40000 10785
    45000 12214
    50000 10311
    55000 12026
    60000 12369
    65000 11522
    70000 11436
    75000 11679
    80000 11782
    85000 14148 2тест 14099
    90000 12219
    95000 13018
    100000 13360
    105000 13287
    110000 13624
    115000 13505
    120000 14348 2тест 14362
    125000 13777
    130000 12718
    135000 13326
    140000 13503
    145000 13487
    150000 14086 2тест 14080
    155000 14209 2тест 14128
    160000 13610
    165000 13720
    170000 13081
    175000 12526
    180000 13810
    185000 14084
    190000 13560
    195000 14265 2тест 14161
    200000 13628

    Проверил,какова будет эффективность лучших кт,если сгенерить с них словарь повторно.Как видно,эффективность сохраняется.
    Если сравнить общие результаты предыдущего теста и этого видно,что разница по выхлопу небольшая.
    Но в прошлом тесте было взято всего 2мб словаря.А в этом уже 110,но в нём некоторых типов строк было с избытком.
    Если руки дойдут,может попробую сделать словарь с максимально возможным количеством типов строк.Тогда станет понятнее,какие характеристики словаря наиболее эффективны.
     
    Petr Sitkin likes this.