Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2014, 17:29   #11
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Ну ссылку ко ты на видос дал, я ждал ссылку на объективную статью.

По твоей ссылке какая-то девочка неразумная. Она вообще говорить не умеет, заикается.


Это то, с чего твоя девочка начинает (запятые я расставить не все смог, т.к. правилам русского языка потоки сознания не подчиняются). Как по мне, у нее речь вообще несвязная. Ее предварительный диагноз - "нелогичность".


Я не стал смотреть видос до конца, но кода я не увидел. Девочка показала как она вызывает функцию do(). Она не привела ни реализацию на питоне, ни на С++, просто вызов функции do(). Я предсказываю, что она тот еще говнокодер (судя по диагнозу, который ей поставил наш психиатр)
Она училась в универе за границей, кембридж вродебы или какой то там знаменитый.
Если послушать внимательно она пытается с анг. перевести на русскиц язык.

Она шурупит нормально, но не все могут быть учителями =)

Я сам с 12 лет не учился в русской школе. Иногда как выдам чтонить, предки угарают =))).

А так конечно ты прав, нужно брать правильный пример кода, объемный, и прогонять конкретно для теста. Но "С" остается на сколько мне известно самым быстрым языком.

Вот наглядный пример того как сильно питон отстает или какой шустрый С/C++!

http://www.ibm.com/developerworks/ru...anySpeed_08_1/
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 16.08.2014, 18:01   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Вот наглядный пример того как сильно питон отстает или какой шустрый С/C++!
Там странный тест. Код написан на всех без исключения языках эпически не оптимально.

Но если тебе очень интересно, то посмотри вот тут: http://pro-prof.com/archives/848
Эту статью писал я. Пример тот же, что и по твоей ссылке на сайте IBM.

У меня для С++ приведено 3 варианта реализации - с рекурсией (как на IBM, с хвостовой рекурсией и с циклом). А потом тот же самый пример на языке SWI Prolog (это такой же интерпретируемый язык, как и Питон), дак вот там 2 рисунка, по которым видно, что наибольший эффект достигается не за счет смены языка, а за счет нормальной реализации.

45 число Фибоначчи на моем железе на С++ вычисляется за 13 секунд (рекурсивно) и за 2-3 миллисекунды с хвостовой рекурсией или циклом.

Аналогичная задача на SWI - 91 секунда рекурсивно и 10 миллисекунд хвостовой рекурсией (циклов там нет).

Короче более оптимальное решение на тормозном прологе работает гораздо быстрее чем неоптимальное решение на быстром C++. С питоном картина будет та же.
rrrFer вне форума Ответить с цитированием
Старый 16.08.2014, 18:07   #13
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Кстати, все эти тесты (что у меня в статье, что на сайте IBM, и тем более у девочки с видоса) не объективны. Т.е. по разнице 2 или 3 милисекунды ничего определенного сказать нельзя. Может быть во второй раз мне на почту сообщение пришло и почтовый клиент загрузил процессор. Т.е. все замеры времени не объективны. Они примерно что-то отражают, но на 100% верить им нельзя. Я потом и взял считать факториал 45, а не 30 (как на сайте ibm), т.к. иначе разница по времени получалась не такой значительной. Понятно что 91 секунда и 10 миллисекунд - это сильно разные результаты и вряд ли дело в загруженности процессора...
rrrFer вне форума Ответить с цитированием
Старый 16.08.2014, 20:01   #14
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Код написан на всех без исключения языках эпически не оптимально.
Думаете, что если на всех языках написать тесты одинаково оптимально, то соотношения времен выполнений будут другими?
waleri вне форума Ответить с цитированием
Старый 16.08.2014, 20:26   #15
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Думаете, что если на всех языках написать тесты одинаково оптимально, то соотношения времен выполнений будут другими?
Да. Я даже пример привел. Там соотношение времени другое выходит, хотя в миллисекундах нельзя быть уверенным.
Притом все это зависит уже не от языка, а от оптимизатора. Я считаю, что кодогенератор на паскале и на Си работает примерно одинаково эффективно, но я не исключаю что оптимизатор на С++ может работать лучше. Опять же это зависит от флажков оптимизатора и от компилятора вообще. Например icc вроде как оптимизирует лучше чем gcc (непроверенная инфа). Так што утверждать что-либо о языке я бы вообще не стал.

По примеру с сайта ibm... я не знаю, но думаю что какой-нибудь оптимизатор (какого-нибудь хаскеля/эрланга) возможно в примере с числами Фиббоначи прошарит возможность табулирования и отложит результат fib(i-2) в памяти на какое-то время чтобы не вызывать функцию лишний раз, а если так - то опять же автоматом заменит рекурсию циклом. Я не проверял, я говорю что может быть теоретически такой оптимизатор, в ряде книжек по функциональщине я читал про такие трюки. Но это не будет значить что эрланг работает лучше С++, просто на этой конкретной задаче его оптимизатор срабатывает лучше.

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

В любом случае, 3 миллисекунды на С++ и 10 миллисекунд на прологе (притом это интерпретатор, у SWI нет генератора в нативный код, а если бы был...возможно...). Да и 7 миллисекунд можно списать на погрешность xD.

Короче если писать нормально, то преимущество С++ относительно пролога - 7 МИЛЛИсекунд. Если говнокодить, то 78 секунд. Просто потому что оптимизатор С++ лучше прочухал эту хрень.

Последний раз редактировалось rrrFer; 16.08.2014 в 20:28.
rrrFer вне форума Ответить с цитированием
Старый 16.08.2014, 21:12   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

первый параметр указатель на массив байт(указатель на первый байт массива) который нужно прохэшировать, второй его длина.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.08.2014, 00:35   #17
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
что у меня в статье
Хорошая статья!

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
первый параметр указатель на массив байт(указатель на первый байт массива) который нужно прохэшировать, второй его длина.
Тот пример у меня так и не получилось запустить. Я вообще нешарю с С подобных.

Другой пример заработал. Но вот какая штука,

Нужна функ. которая примит строку 'aaa' и вернет тоже строку но уже обработаную.

Я почитал на стакОверфлоу, они говорят что можно использовать std::string;

Только у меня нифига не запускается. Может я что то не так делаю

Код HTML:
std::string try_it(std::string st2){
	return md5(st2);	
}
А если просто вызвать в main вот так то выводит хеш.
Код HTML:
int main(){
	cout << md5('aaa') << endl;	
}
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2014, 03:04   #18
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
А если просто вызвать в main вот так то выводит хеш.
Да тебе ж написал я все.
Параметра ДВА, второй - длина строки.
Кавычки ДВОЙНЫЕ.

Код:
std::string str = "aaa";
md5(str.c_str(), str.length());
Попробуй так
rrrFer вне форума Ответить с цитированием
Старый 17.08.2014, 03:26   #19
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Огромное спасибо! =))) Это я балван!
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2014, 09:56   #20
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 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.
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли в 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