| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Где узкое место |
| Автор: K0r0l 12.11.2004, 21:22 | ||
то есть как можно ускорить работу этого цикла? поясню если кто не понял: 1) читаем из словаря строку 2) цикл пока не прочли все из словаря и внутри цикла действие № 3 - создание md5 хеша от прочитанной строки |
| Автор: bel_nikita 12.11.2004, 21:39 |
| K0r0l с первого взгляда, нужно ли в цикле все время вычислять strlen(pair.pass_c) ? |
| Автор: K0r0l 12.11.2004, 21:41 |
| да, посколько мы его только что прочитали.. а длина паролей в словаре разная |
| Автор: bel_nikita 12.11.2004, 22:15 | ||||||
| K0r0l еще не совсем въехал, но читаешь в
так и вычисли
вроде pair.pass_c в цикле №2 не меняется. или меняется? |
| Автор: K0r0l 14.11.2004, 01:50 |
| ты прав не меняется... но вот парадокс... добавил такую строчку после dictfile >> pair.pass_c; pass_len = strlen(pair.pass_c); ну и внутри цикла подставляю эту переменную... так прога вместо того чтобы выполняться быстее выполняется медленнее! смотри лог: 1) новая версия real 0m4.665s user 0m4.610s sys 0m0.030s 2) старая версия real 0m4.302s user 0m4.300s sys 0m0.000s это средние значения после трех тестовых запусков.. ничего не понимаю )) |
| Автор: bel_nikita 14.11.2004, 02:16 |
| K0r0l и ничего нигде больше не менял, кроме вычисления длины перед циклом? |
| Автор: K0r0l 14.11.2004, 13:40 | ||
неа.... а может проверку совпадения хеша паролю как нить по-другому организовать... сорри что достаю, но может есть еще какие-нить идеи... |
| Автор: Mad 14.11.2004, 14:03 | ||
| K0r0l Насколько я знаю, замедления работы зачастую вставляют прямо в MD5 функции (защита от подбора, чем дольше проверяется пароль тем меньше вероятность потбора, точнее надо больше времени на проверку всех вариантов).
ненамного, но быстрей |
| Автор: K0r0l 19.11.2004, 20:58 |
| хм... компилятор одинаковый код выдал для двух этих конструкций )) |
| Автор: sergejzr 19.11.2004, 21:01 |
| Не пользуйтесь стримами, а читайте из файла блоками функцией read. Правда парсить блоки в цифры и строки самому придётся, но будет намного быстрее |
| Автор: K0r0l 19.11.2004, 22:25 |
| уже пробовал там все равно код получается громоздким.. нужно еще \0 отрезать от получаемой строки.. и пр геморой... но все равно спасибо |
| Автор: po-her 20.11.2004, 00:15 |
| Подскажите как это считается время выполнения цикла, программы, функции...? |
| Автор: sergejzr 20.11.2004, 00:23 |
| В Юниксах это Запускаете свою программу, например"my.out", так: time my.out На экран выходит информация Но это только общее время выполнения. |
| Автор: po-her 21.11.2004, 17:23 |
| А если я под windows программирую.. Тогда как? |
| Автор: chipset 21.11.2004, 17:41 |
| GetProcessTimes работает только в NT |