|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.08.2014, 17:29 | #11 | |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Цитата:
Если послушать внимательно она пытается с анг. перевести на русскиц язык. Она шурупит нормально, но не все могут быть учителями =) Я сам с 12 лет не учился в русской школе. Иногда как выдам чтонить, предки угарают =))). А так конечно ты прав, нужно брать правильный пример кода, объемный, и прогонять конкретно для теста. Но "С" остается на сколько мне известно самым быстрым языком. Вот наглядный пример того как сильно питон отстает или какой шустрый С/C++! http://www.ibm.com/developerworks/ru...anySpeed_08_1/
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
|
16.08.2014, 18:01 | #12 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Но если тебе очень интересно, то посмотри вот тут: http://pro-prof.com/archives/848 Эту статью писал я. Пример тот же, что и по твоей ссылке на сайте IBM. У меня для С++ приведено 3 варианта реализации - с рекурсией (как на IBM, с хвостовой рекурсией и с циклом). А потом тот же самый пример на языке SWI Prolog (это такой же интерпретируемый язык, как и Питон), дак вот там 2 рисунка, по которым видно, что наибольший эффект достигается не за счет смены языка, а за счет нормальной реализации. 45 число Фибоначчи на моем железе на С++ вычисляется за 13 секунд (рекурсивно) и за 2-3 миллисекунды с хвостовой рекурсией или циклом. Аналогичная задача на SWI - 91 секунда рекурсивно и 10 миллисекунд хвостовой рекурсией (циклов там нет). Короче более оптимальное решение на тормозном прологе работает гораздо быстрее чем неоптимальное решение на быстром C++. С питоном картина будет та же. |
|
16.08.2014, 18:07 | #13 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Кстати, все эти тесты (что у меня в статье, что на сайте IBM, и тем более у девочки с видоса) не объективны. Т.е. по разнице 2 или 3 милисекунды ничего определенного сказать нельзя. Может быть во второй раз мне на почту сообщение пришло и почтовый клиент загрузил процессор. Т.е. все замеры времени не объективны. Они примерно что-то отражают, но на 100% верить им нельзя. Я потом и взял считать факториал 45, а не 30 (как на сайте ibm), т.к. иначе разница по времени получалась не такой значительной. Понятно что 91 секунда и 10 миллисекунд - это сильно разные результаты и вряд ли дело в загруженности процессора...
|
16.08.2014, 20:01 | #14 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
16.08.2014, 20:26 | #15 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Притом все это зависит уже не от языка, а от оптимизатора. Я считаю, что кодогенератор на паскале и на Си работает примерно одинаково эффективно, но я не исключаю что оптимизатор на С++ может работать лучше. Опять же это зависит от флажков оптимизатора и от компилятора вообще. Например icc вроде как оптимизирует лучше чем gcc (непроверенная инфа). Так што утверждать что-либо о языке я бы вообще не стал. По примеру с сайта ibm... я не знаю, но думаю что какой-нибудь оптимизатор (какого-нибудь хаскеля/эрланга) возможно в примере с числами Фиббоначи прошарит возможность табулирования и отложит результат fib(i-2) в памяти на какое-то время чтобы не вызывать функцию лишний раз, а если так - то опять же автоматом заменит рекурсию циклом. Я не проверял, я говорю что может быть теоретически такой оптимизатор, в ряде книжек по функциональщине я читал про такие трюки. Но это не будет значить что эрланг работает лучше С++, просто на этой конкретной задаче его оптимизатор срабатывает лучше. Очевидно, программы на питоне в общем случае работают медленнее чем на плюсах. т.к. он интерпретируемый, а значит есть издержки. Другой вопрос что возможно программы на питоне можно таки компилировать нормально и тогда все будет зависеть уже от качества кодогенератора. Например джависты постоянно хвастают что в общем случае кодогенератор даст примерно такой же оптимальный код, как и компилятор плюсов. В любом случае, 3 миллисекунды на С++ и 10 миллисекунд на прологе (притом это интерпретатор, у SWI нет генератора в нативный код, а если бы был...возможно...). Да и 7 миллисекунд можно списать на погрешность xD. Короче если писать нормально, то преимущество С++ относительно пролога - 7 МИЛЛИсекунд. Если говнокодить, то 78 секунд. Просто потому что оптимизатор С++ лучше прочухал эту хрень. Последний раз редактировалось rrrFer; 16.08.2014 в 20:28. |
|
16.08.2014, 21:12 | #16 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
первый параметр указатель на массив байт(указатель на первый байт массива) который нужно прохэшировать, второй его длина.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
17.08.2014, 00:35 | #17 | |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Хорошая статья!
Цитата:
Другой пример заработал. Но вот какая штука, Нужна функ. которая примит строку 'aaa' и вернет тоже строку но уже обработаную. Я почитал на стакОверфлоу, они говорят что можно использовать std::string; Только у меня нифига не запускается. Может я что то не так делаю Код HTML:
std::string try_it(std::string st2){ return md5(st2); } Код HTML:
int main(){ cout << md5('aaa') << endl; }
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
|
17.08.2014, 03:04 | #18 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Параметра ДВА, второй - длина строки. Кавычки ДВОЙНЫЕ. Код:
|
|
17.08.2014, 03:26 | #19 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Огромное спасибо! =))) Это я балван!
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
17.08.2014, 09:56 | #20 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Ребята последний вопрос, сам не могу понять что тут происходит.
Наверное какой то перегон форматов чтоили. вот есть кусок кода. printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h0); как сделать так что бы то что этот printf() выводит можно было сохранить в переменную. пробовал по разному, но там видно не просто подставление идет, а какой то перегон значений наверное. А как их можно перегнать без вывода, на пример все сложить в одну переменную? Вот так вообще ругается. //char exr = p[0] 2.2 x p[1] 2.2 x p[2] 2.2 x p[3]2.2 x p[0]+h[0]; //char aa = 02x(p[0]); //printf(aa); Код HTML:
int get_md5(char* n){ char *msg = n; size_t len = strlen(msg); md5((uint8_t*)msg, len); uint8_t *p; p=(uint8_t *)&h0; // -------------------------------------------------------------- printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h0); p=(uint8_t *)&h1; printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h1); p=(uint8_t *)&h2; printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h2); p=(uint8_t *)&h3; printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h3); // -------------------------------------------------------------- puts(""); return 0; } Вот кстати, оказывается уже давно есть онлайн компиляторы GCC. Исходники не получилось там сразу привязать, их нужно отдельно встявлять. Сылка на исходник. http://slavik.nl/c_cpp/
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
Последний раз редактировалось pompiduskus; 17.08.2014 в 10:03. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть ли в delphi md5 как в lazaruse, там достаточно подключить MD5 и считать хэш? | Taner | Общие вопросы Delphi | 8 | 12.05.2014 08:38 |
код, который должен открывать файл, находить в нем определенный символ и заменять его на другой, не записывает в файл | Dima-War | Общие вопросы C/C++ | 2 | 14.12.2013 21:35 |
сохранить текстовый файл, который загружен в мемо поле (загрузка файла- есть код) Делфи 7 | программирование | Помощь студентам | 5 | 22.11.2013 07:17 |
Повторение javascript кода бесконечно! Есть код,хочу заставить его повторяться | Viboxjuwin | JavaScript, Ajax | 5 | 11.10.2013 13:46 |
Возможна ли программа на Delphi, которая генерирует текст и постит его на сайт | vindows93 | Свободное общение | 31 | 16.12.2011 22:33 |